
해설 문제만 잘 읽으면 크게 어려운 문제는 아닌데 문제를 잘 읽는게 젤 귀찮고 힘든느낌ㅋㅋㅋㅋㅋㅋㅋ 곡괭이의 개수가 모자라도 끝나고 광물의 개수가 모자라도 끝난다. 그래서 종료체크를 두번 해 주어야함 ㅠㅠ 나는 재귀를 이용해서 풀었다. 처음 곡괭이를 고르고 그 뒤 5번까지의 피로도를 계산해 준 뒤 다시 DFS를 돈다. 만약 그 과정에서 광물의 개수가 끝나면 종료시킨다. DFS를 진입하면서도 곡괭이의 개수를 확인해주면 종료조건은 끝. 중간에 문제가 4개정도만 틀리는 상황이 있어서 시간을 좀 많이 잡아먹엇는데 종료조건 체크를 잘못한 거였다 ㅠㅠ 문제 설명 마인은 곡괭이로 광산에서 광석을 캐려고 합니다. 마인은 다이아몬드 곡괭이, 철 곡괭이, 돌 곡괭이를 각각 0개에서 5개까지 가지고 있으며, 곡괭이로 광물을..

해설 어려운 문제는 아니어서 재귀로 풀어봤다가 피보나치를 이용해서 풀었다. 재귀는 시간초과가 7번부터 난다. 피보나치를 이용한 이유는 다음과 같다. n = 1, result = 1 n = 2, result = 2 n = 3, result = 3 n = 4, result = 5 n = 5, result = 8 n = 6, result = 13 n = 7, result = 21 n = 8, result = 34 이 되므로 피보나치를 이용할 수 있다. 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5..

해설 행렬 회전에 대해 공부하다가 만나게 된 문제이다. 흥미로워서 코딩테스트 시간에 풀어보려고 점찍어뒀던 문제! 접근방법은 간단하다. 키를 회전하면서 자물쇠의 크기대로 열쇠를 비교해주면 된다. 먼저 우리가 원하는 모습은 키를 오른쪽으로 90도 회전 시킨 후 아래와 같이 적용한 모습이다. 위의 모습을 만들기 위해서는 키를 하나하나 자물쇠에 대입해보면 된다. 위의 그림처럼 빨간색이 자물쇠라면 키를 한 칸씩 이동시켜서 자물쇠와 비교해 주면 된다. 이를 구현하기 위해서는 자물쇠를 자물쇠*3 사이즈의 벡터 가운데에 넣어주는 작업또한 필요하다. 그렇게 구현해서 테스트 케이스 출력을 해보면 다음과 같이 나온다. 21,21 좌표에서 키의 모습이 아래와 같을 때 true 가 된다는 소리이다. 나는 자물쇠의 크기 *3 을..

해설 가끔은 레벨 1도 푸는 날이 있어야 하지 않을까 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 x return 10 true 12 true 11 false 13 false 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 ..

c++ 의 const function 을 알면서 알아야 할 키워드 중 하나는 mutable이다. 일반 함수 안에서는 일반 멤버 변수와 mutable 키워드를 가진 변수는 수정 가능하지만 const 키워드가 붙은 변수는 수정 불가능하다. 하지만 const 함수 내에서는 일반 멤버 변수도 수정 불가능 하다. 하지만 mutable 키워드가 붙은 변수는 수정이 가능한 것을 볼 수 있다. 이처럼 const 함수 내에서 값 수정이 필수적인 부분들은 mutable을 통해 관리할 수 있다.

해설 원 안에 있는 정점의 개수를 구하는 문제이다. 4분면을 전부 계산하는 것은 부담이 되기 때문에 1분면만 검사하고 *4 해준다. 작은 원의 정점들을 구할 때는 테두리에 정점을 포함하는 원들을 주의해야 한다. 문제 설명 x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요. ※ 각 원 위의 점도 포함하여 셉니다. 제한 사항 1 ≤ r1

해설 먼저 string으로 된 문자들을 int화 시켜준다. 그 다음 정렬을 한번 한 뒤 벡터를 순회하면서 입실 시간과 퇴실 시간 + 10분을 한 시간을 비교한다. 비교하여 입실 가능한 예약들만 temp벡터에 추가해주고 기존 객실이 저장되어 있던 벡터에 덮어씌운다. nextRoom 벡터의 크기중 맥시멈이 필요한 방의 수가 될 것이다. 문제 설명 호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다. 예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요. 제한사..

DFS 문제라고 생각해서 DFS로 5분만에 뚝딱 만들었다가 시간초과가 반절이나 나서 당황했다. DFS는 최소값만을 찾아내기엔 비효율적이다. 앞으로는 이를 염두에 두고 문제를 풀어야겠다. 올바른 풀이는 BFS를 이용했다. 큐와 배열을 사용했고 이미 접근한 부분에 대해서는 중복되는 연산을 피하게 설계했다. 문제 설명 자연수 x를 y로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다. x에 n을 더합니다 x에 2를 곱합니다. x에 3을 곱합니다. 자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때 x를 y로 만들 수 없다면 -1을 return 해주세요. 제한사항 1 ≤ ..

코딩테스트 초창기에 풀다가 못풀었던 나름 사연있는 문제. 보통 답으로 long long 을 요구하는 문제는 무지성 for문을 이용하면 시간초과가 나게 되어있다. 이거 나름 코딩테스트 꿀팁임. 동일한 몸무게에 대한 중복연산을 하지 않으려고 map을 사용했다. map을 사용해서 요소 하나하나 비교하면서 2:4, 3:4, 2:3 의 비율을 가진 몸무게를 찾으면 된다. 여기서! 내가 헷갈렸던 부분. 만약 100짜리 몸무게를 가진 친구들이 4명이라고 하자. 그러면 100 몸무게를 가진 친구들끼리 시소를 탈 수 있는 값은 6번이 된다. 동일한 몸무게를 가진 친구들은 nC2, 즉 n * n-1 / 2를 해 주어야 한다. 그렇다면 만약 2:4를 만족하는 케이스인 100 과 200이 있다고 하자. 100 몸..

그리디를 이용하는 문제이다. 데이터들이 정렬이 되어있지 않아 정렬이 필요한 문제. 반복문을 돌면서 미사일의 종료 범위를 지정하고, 현재 미사일의 범위를 벗어나면 answer를 ++ 해주고 새로운 범위를 지정해 주는 방식으로 쉽게 풀 수 있다. 이 때 comp 함수를 직접 제작해 주는데 데이터를 어떤 값을 기준으로 정렬을 해야하나? 하는 의문이 들 수 있다. 다음 테스트 케이스를 보면 금새 감을 잡을 수 있다. [[0, 4], [0, 1], [2, 3]] 를 입력하면 예상 출력값은 2이다. 그림으로 보면 아래와 같다. targets 벡터의 첫번째 요소 즉 시작 값으로 정렬하면 [[0, 4], [0, 1], [2, 3]] 가 될 것이다. 따라서 반복문을 돌면 값은 1이 나온다. (오답) 하지만 ..
- Total
- Today
- Yesterday
- 개인공부
- 프로그래머스
- 정렬
- 힙
- 고득점 Kit
- 재귀
- Ue
- 데디케이티드
- LV2
- greedy
- UE5
- Heap
- Unreal 5.1
- 디자인 패턴
- sort
- BFS
- 해시
- 스택/큐
- 고득점kit
- 너비우선탐색
- FPS
- IMGUI
- level3
- DFS
- C++
- 누적합
- 완전탐색
- LV3
- 탐욕법
- 채팅서버
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |