본문 바로가기

Algorithm

(2139)
(C++) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 외벽 점검 https://programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr brute force로 푼 문제였습니다. 풀이방법 1. dist를 오름차순으로 정렬해줍니다. 2. 조합을 통해 dist를 정해줍니다. dist배열의 왼쪽이 투입할 우선순위가 제일 높습니다. 매 조합으로 dist를 정할 때마다 weak를 계속해서 돌리며 최소의 투입인원을 찾습니다. 8! * 15 * 8 = 4838400으로 1초 내에 수행 가능합니다. weak를 ..
(C++) - 백준(BOJ) 2028번 : 자기복제수 https://www.acmicpc.net/problem/2028 2028번: 자기복제수 어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다. 예를 들면, 5의 제곱은 52는 25이고 25의 맨 뒷자리에 원래의 수 5가 www.acmicpc.net 단순 구현문제였습니다. 풀이방법 1. 입력받은 수와 제곱수를 문자열로 바꿉니다. 2. 제곱수 문자열에서 입력받은 수의 문자열을 찾습니다. find함수를 통해 찾은 인덱스를 확인해서 마지막에 입력받은 수 문자열이 나온다면 YES, 아니라면 NO를 출력합니다. *find함수는 인자에 해당하는 값을 찾지 못했다면 string::npos를 반환합니다. Code #include using na..
(C++) - 프로그래머스(2021 Dev-Matching: 웹 백엔드 개발자) : 다단계 칫솔 판매 https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr backtracking 으로 푼 문제였습니다. 풀이방법 1. 각 판매원들의 추천인들이 곧 graph로 따지면 parent node가 됩니다. 이 정보를 적절한 자료구조로 저장한다면 graph형태로 나타낼 수 있습니다. "-"는 root라고 생각하고 서순을 지키기 위해 unordered_map을 사용해 저장합니다. 2. 모든 seller정보에 대해 이익을 갱..
(C++) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 기둥과 보 설치 https://programmers.co.kr/learn/courses/30/lessons/60061?language=cpp 코딩테스트 연습 - 기둥과 보 설치 5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]] 5 [[0,0,0,1],[2,0,0,1],[4,0,0,1],[0,1,1,1],[1,1,1,1],[2,1,1,1],[3,1,1,1],[2,0,0,0],[1,1,1,0],[2,2,0,1]] [[ programmers.co.kr 구현 문제였습니다. 풀이방법 set을 이용해 해결했습니다. ..
(C++) - 프로그래머스(Summer/Winter Coding(~2018)) : 기지국 설치 https://programmers.co.kr/learn/courses/30/lessons/12979 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 그리디 문제였습니다. 풀이방법 아파트의 개수가 최대 2억이기 때문에 배열로 체크하는 형식은 불가합니다. 따라서 회색 부분의 길이들을 모두 구해서 저장한 뒤 순차적으로 기지국을 설치해줘야합니다. 1. 영역 구하기 회색 부분의 영역은 3가지 형태로 존재합니다. 1-1. 가장 왼쪽 영역 : 이 경우에는 1번 아파트 부터 처음 설치된 기지국까지의 길..
(C++) - 프로그래머스(2019 KAKAO BLIND RECRUITMENT) : 길 찾기 게임 https://programmers.co.kr/learn/courses/30/lessons/42892 코딩테스트 연습 - 길 찾기 게임 [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr Linked list로 graph를 만든뒤 전위, 후위 순위를 하는 문제였습니다. 풀이방법 1. 노드 번호를 nodeinfo에 추가해줍니다. i번째 nodeinfo는 i+1의 노드번호를 가집니다. 2. x축에 대해 오름차순으로 정렬해줍니다. 이러면 중간에 적절히 root에 해당하는 가장 큰 y값의 node가 위치하게 됩니다. 3. tree구조를 struct 형태로..
(C++) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 자물쇠와 열쇠 https://programmers.co.kr/learn/courses/30/lessons/60059# 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 구현 문제였습니다. 풀이방법 검은색 부분은 key이고 파란 부분은 lock입니다. 계속해서 오른편으로 이동하고 끝에 다다르면 한 칸 내려가 처음부터 시작해 다시 오른쪽으로가는 방법으로 열 수 있는지의 여부를 알아낼 수 있습니다. 1. expandedLock 배열을 만들어 lock을 50 * 50으로 넉넉하게 확장해줍니다. 그리고 (20 ~ 20 + 행)부터 (20번째 열 ~ 20 + lock.size()번째 ..
(C++) - 프로그래머스(2021 KAKAO BLIND RECRUITMENT) : 합승 택시 요금 https://programmers.co.kr/learn/courses/30/lessons/72413# 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr Floyd Warshell문제였습니다 풀이방법 1. 요금정보를 저장할 배열 cha..