Coding Test(125)
-
[Programmers] Lv2. 리코쳇 로봇 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 처음에는 DFS로 접근을 했다가 결국 못 풀었습니다. 아마 그대로 진행했어도 가지 치기를 못해서 시간 초과가 났을 것 같네요. 그래서 BFS로 전략을 바꿔 풀다 보니 알게 된 사실인데, 제가 설계를 조금 잘못했었더라구요. 장애물이나 맨 끝에 부딪힌 빈 공간만 방문 표시를 했었어야 했는데, 지나간 경로를 다 방문 표시 해버렸습니다..ㅎㅎㅎ 아무튼, BFS를 통한 전략은 다음과 같습니다. 로봇의 처음 위치 'R', 목표 지점 'G'의 좌표를 알아낸 후 저장해둔다. R의 좌표를 방문..
2023.06.07 -
[Programmers] Lv2. 광물 캐기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 저는 백트래킹(Backtracking)을 이용하여 풀었습니다. 구현 과정은 다음과 같습니다. 광물을 5개씩 차례대로 분리하고, 남은 광물 수가 5개가 안 될 경우에는 남은 광물을 모조리 담아 2차원 배열 생성 곡괭이 배열과 분리한 2차원 광물 배열을 순회하면서, 곡괭이를 다 썼거나 광물이 없을 때까지 피로도 합산 진행 합산한 피로도가 이전에 계산한 최솟값 피로도보다 작다면 변경 이후 한 단계 뒤로 가서 다음 탐색은 없는지 진행 문제를 풀고 나서 다른 분들 풀이는 어떨까 하고 찾..
2023.06.06 -
[Programmers] Lv2. 마법의 엘리베이터 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 내려가는 게 유리한 숫자 : 0, 1, 2, 3, 4 올라가는 게 유리한 숫자 : 6, 7, 8, 9 애매한 숫자 : 5 숫자 5가 나왔을 때에는 바로 앞 숫자를 살펴보는 게 필요합니다. 바로 앞 숫자가 5 이상이라면 올라가는 게 유리하고, 5 미만이라면 내려가는 게 유리합니다. # [예시1] 35 - 올라갈 경우 : 35 + 5 -> 40 - 40 => 9번 사용 - 내려갈 경우 : 35 - 5 -> 30 - 30 => 8번 사용 3은 5보다 작으므로 내려가는 게 유리합니다...
2023.06.05 -
[Programmers] Lv2. 뒤에 있는 큰 수 찾기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력 데이터의 크기가 백만 개라 \( O(N^2) \)으로는 풀 수 없습니다. 어떤 자료구조를 쓸까 고민을 많이 했습니다. 문제에서 볼 수 있는 특징들은 다음과 같습니다. 입력 데이터를 차례대로 순회 시작 현재 숫자가 뒤의 숫자보다 작다면, 뒤의 숫자는 뒷 큰수이므로 현재 숫자를 해당 뒷 큰수로 교체 현재 숫자가 뒤의 숫자보다 크다면, 뒷 큰수가 있을 수도 없을 수도 있는 숫자이므로 따로 관리 따로 관리되는 이 숫자들은 훗날 뒷 큰수를 만났을 때, 해당 뒷 큰수보다 작은 숫자들..
2023.06.04 -
[Programmers] Lv2. 모음 사전 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 백트래킹(Backtracking)을 이용해 사전 순서대로 단어를 조합하는 방식으로 풀었습니다. 1)알파벳을 하나씩 붙이고 떼는 과정에서 인덱스 번호를 증가시키고, 2)원하는 단어를 찾으면 탐색을 중지하도록 구현하였습니다. 재귀(Recursion)와 백트래킹(Backtracking) 개념이 처음에는 익숙하지 않아, 코드로 구현하기 어려웠는데 점점 연습하다 보니 익숙해 지는 것 같습니다. ✏️소스 코드 및 결과 #include #include using namespace std; ..
2023.06.04 -
[Programmers] Lv2. 호텔 대실
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 주어진 문자열 [대실 시작 시각, 대실 종료 시각]을 분(minute)으로 환산하여 정수로 저장 ex) ["14:30", "15:30"] \(\rightarrow\) [870, 930] 저장한 예약 시간들을 오름차순으로 정렬 예약 시간들을 순회 시작 현재 사용 중인 방들을 순회하여, 해당 방의 마지막 대실 이용 시간과 비교 해당 방에 예약 추가가 가능하면 추가 후, 오름차순 정렬 예약 추가가 불가능하면 새로운 방을 추가하여 삽입 순회를 모두 돌았다면, 방 크기 리턴 ✏️소스 코..
2023.06.03