Heap 3

Heap and Stack

Heap and Stack 둘다 메모리를 저장하는 곳이다. 운영 체제에서는 프로그램의 실행을 위해 메모리 공간을 4부분으로 제공하는데 코드영역 실행할 프로그램 코드 데이터영역 전역변수, 정적 변수 프로그램 시작시 할당, 프로그램 종료시 소멸 Heap영역 사용자의 동적할당 전역 변수 런타임에 크기 결정 Stack영역 메모리의 정적 할당 지역 변수, 매개 변수, 함수 LIFO관리 컴파일타임에 크기 결정 요건데, 사실상 코드영역이랑 데이터영역은 그냥 있는 애들이고, heap이랑 stack에 대해 한번 자세히 알아보자! Stack Stack은 정적으로 메모리가 할당된다. 그리고 지역변수와 매개변수, 그리고 함수여서 함수가 호출되면 쭈루룩 할당되고, 호출이 완료되면 소멸된다. Stack은 이름 그대로(java에서..

이론 정리 2022.12.27

Golang의 포인터

포인터 포인터는 C나 C++에서 지원하는 친구인데, Go도 이걸 지원한다. 참고로 java, python, JS등에서도 포인터를 쓰고는 있는데, 이걸 개발자가 직접 쓰는게 아니라 암묵적으로 내부에서 사용하는 것이다. 포인터는, 메모리 주소를 값으로 갖는 타입이다. var a int var p *int p = &a // a의 메모리 주소를 포인터 변수 p에 대입이거는 var p가 int타입의 메모리 주소값을 값으로 가지고 있다는 것이고, a의 메모리 주소를 p가 저장한다. *p = 20 이건 p가 a의 주소를 가지고 있었는데, 그 공간의 값을 20으로 넣어라 라는 것이다. 이렇게 되면 a의 값이 20이 될 것이다. 여러 포인터 변수가 하나의 변수를 가리킬 수 있다. package main import "f..

[프로그래머스] 더 맵게- java

문제 설명 1. 스코빌 지수, K가 주어진다. 2. 가장 작은 스코빌 지수부터 (최소값+2*최소다음값) 으로 더 큰 값을 만들 수 있다. 3. 스코빌 지수가 모두 K보다 크게 만드는 방법을 return하면 된다. 불가능하면 -1을 return한다. 풀이 과정 1. level2 문제라고는 생각도 들지 않을정도로 간단한 우선순위 큐 문제이다. 2. 우선순위 큐를 사용하면 작은 수부터 오름차순으로 배열된다. 3. 스코빌 지수를 작은 순서부터 꺼내가면서 더해줘서 구하면 된다. 4. 참고로 아무리 구해도 구할 수 없는 경우가 생기는데, 우선순위 큐의 크기가 1이 되면 구할 수 없는 것이므로 나가면 된다. 1) 맨 위 + 다음맨위*2 를 더해서 우선순위 큐에 넣는다. 2) 이걸 while이 K보다 작은 동안 계속 ..

알고리즘 공부 2021.10.27