전체 글68 bit flag / left shift 사용 중 defect을 맞았다 Background 길이 5인 배열 arr가 있다. 해당 배열에는 enum으로 정의되어있는 action 정보가 들어가있는데, 예를 들면 arr = {actionC, actionZ, actionP, actionX, actionA} 이런식이다. 내가 구현하고자 하는 함수는 이 배열을 돌면서 actionA와 actionP가 가장 먼저 등장하는 index를 구하는 것이었다. 위의 예시에는 세번째에 actionP가 먼저 등장하니, 2가 정답이 된다. 다만 문제를 복잡하게 만드는 것은, action 몇개에 대해서 위 내용을 확인해야하는지가 그때그때 바뀐다는 것이다. actionA에 대해서만 확인하면 될 수도 있고, actionM~Z에 대해서 모조리 확인해야할 수도 있다. 이 경우, 26개의 옵션을 정의하려면 각각.. 2022. 3. 11. typedef | 구조체 | 구조체 포인터 typedef typedef를 마치 "별명"처럼 사용할 수 있다는 것을 알고 있다. 아래와같이 배열에 대해 typedef를 사용하는 방법도 있으니 알아두자. #include int main() { typedef int Pair[2]; Pair point = {3, 4}; // int point[2] = {3, 4}; printf("(%d %d)\n", point[0], point[1]); } Output (3 4) int point[2]를 사용했을때는 아 그냥 두개짜리 배열이구나.. 했던 내용인데 Pair Point라고 선언함으로써 순서쌍을 나타낸다는 것을 직관적으로 알 수 있다. #include int main() { typedef char *String; String name = "Dood"; // .. 2022. 3. 11. 배열의 주소 | 배열 포인터 | 포인터 배열 배열의 주소 1. ptr = &ptr[0] 2. *ptr = ptr[0] 3. ptr + 1 == ptr에 sizeof(*ptr)을 더한 값 #include int main() { int arr[3] = {1, 2, 3}; printf("arr = %d\n", arr); printf("arr + 1 = %d\n", arr + 1); printf("&arr = %d\n", &arr); printf("&arr + 1 = %d\n", &arr + 1); } &arr + 1의 결과는 &arr(혹은 arr)의 결과에 sizeof(int)와 같은 4가 아닌, 12가 더해진 값이 나온다. 3의 ptr에 &arr를 대입한다면, '&arr + 1 = &arr에 sizeof(*(&arr))을 더한 값'이 되고 이것을 다시.. 2022. 3. 9. 자료구조 / 힙(Heap) 자료구조 힙(Heap)은 최대값이나 최소값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리이다. 힙에는 최상위 루트에 최대값이 들어가는 최대힙, 최상위 루트에 최소값이 들어가는 최소힙이 있으며, 공통적으로 부모노드와 자식노드의 대소관계가 성립하는 특성을 가진다. 최소힙과 최대힙 중 하나를 알면 다른 하나를 이해하는 것은 어렵지 않기 때문에, 최소힙에 노드를 추가하고 삭제하는 방법을 알아보자. 1. 최소힙에 노드 추가하기 마지막 노드에 추가할 값을 넣어준다. 그 후 부모노드와 자식노드의 대소관계가 성립할때까지 자리를 바꿔준다. O(logN)의 시간 복잡도를 가진다. int heap[16]; int hn; // hn : 5 - heap[0] : - heap[1] : 2 - heap[2] : 4 - h.. 2022. 1. 31. 프로그래머스 / 더 맵게 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 문제 요약 > 음식들의 매운 정도가 주어진다. 모든 음식의 매운 정도가 특정값 이상이 되도록 정해진 방법으로 섞자. 최소 몇 회를 섞어야 하는가? 풀이 > 힙(Heap)으로 분류되어있는 문제이고, 해당 문제에서는 음식들의 '맵기'라는 우선순위가 존재하므로, 우선순위 큐를 떠올렸다. 우선순위 큐는 일반적으로 힙을 이용해서 구현 가능하다. 힙은 부모노드.. 2022. 1. 31. Go / Mac에서 GOPATH 설정하기 GOPATH란 go 언어로 개발할때 사용되는 환경변수이다. go가 깔려있다는 전제 하에.. 새로운 go 프로젝트를 만들고 싶은 디렉토리에 가서 [프로젝트명] 폴더 하위에 bin, pkg, src 폴더를 생성한다. 그리고 pwd로 정확한 [경로]를 확인한 후, 아래 명령어를 수행한다. >> 을 사용하는 것은 ~/.zshrc의 끝부분에 echo 뒤의 내용을 붙여넣기 위함이다. echo "export GOPATH=[경로]" >> ~/.zshrc echo export PATH="$GOPATH/bin:$PATH"' >> ~/.zshrc source ~/.zshrc 잘 설정되었는지는 export로 확인 가능하다. 2022. 1. 26. 프로그래머스 / 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 문제 요약 > 마라톤에 참여한 선수들과 완주하지 못한 선수의 이름이 주어질때, 완주하지 못한 선수의 이름을 리턴하라. 풀이 > 문제 풀이에는 다양한 방법이 존재한다. 그러나 문제 분류가 해시로 되어있어서 해시로 풀어보기로 했다. 이 문제는 무려 5만 8천명 이상이 완료한 문제이고 난이도 또한 Lv1이기 때문에 굉장히 쉽게 풀이가 될거라고 생각.. 2022. 1. 25. Mac OS에 Java 개발환경 셋팅 (VSCode) 를 공부하려고 하는데 책에 나오는 예제 코드들이 자바 기반으로 되어있어서 자바 개발환경을 셋팅해보았다. 왠지 모르겠지만 이클립스는 새로 깔고싶지 않아서, VSCode로 돌려보기로..! 1. JDK 설치 https://www.oracle.com/java/technologies/downloads/#java11-mac 설치 완료 여부는 터미널에서 java -version 및 javac -version을 입력해서 확인 가능하다. 2. VSCode 및 Extension Pack for Java 설치 (3. JDK 버전 변경) - Java 11 or more recent is required to run the Java extension... https://oysu.tistory.com/50 처음에 1.8 버전을 .. 2022. 1. 24. Linux / Shell Script 팁 명령어 실행결과를 변수에 할당하기 A=$(date) echo $A B=`date` echo $B 2022. 1. 21. 이전 1 ··· 3 4 5 6 7 8 다음