코딩테스트

코딩테스트

[프로그래머스 연습 문제] n퀸 c++ (백트래킹, dfs)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12952# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 이 문제는 dfs를 통한 완전탐색 과정에서, 백트래킹으로, 불가능한 트리의 가지를 가지치기 하여 수행 시간을 감소시켜야만 시간초과가 발생하지 않는다. 나는 이를 위해, 퀸이 8방향 모든 칸으로 이동하는 특성 중 좌, 우 모두 이동 가능한 특성을 활용하여 각 dfs(depth) 에서, depth 번째 행에 퀸을 놓을 수 있는 위치를 찾는 것으로 문제를 해결했다. 퀸을 놓을 행은..

코딩테스트

[프로그래머스 고득점 kit] 섬 연결하기 c++ (mst)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42861# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해설 이 문제는 " 전체를 연결하는 최소 비용" 에서 MST문제임을 캐치할 수 있다. MST란? union-find 알고리즘을 통해 트리로 구성하여 새롭게 그룹에 참여하는 간선을 비용이 낮은 순으로 Union 해서 최소 비용을 찾는 문제이다. N개의 Vertex가 있다면, N-1 개의 간선을 병합하여 전체를 1개의 그룹으로 만들 수 있다. 정답 코드 #include #includ..

코딩테스트

[프로그래머스 고득점 kit] 큰 수 만들기 c++ (greedy)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42883?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 해당 문제는 최대 1000000 자리 수 이므로, 모든 가능성을 Combination 구현을 통해 탐색하는 '완전 탐색' 알고리즘을 통해 최대 값을 찾을 시, 시간 초과가 발생한다. 여기서, 1가지 규칙을 찾아 greedy로 문제를 해결할 수 있다. 바로 대소 비교의 특성이다. 9111>8999 아무리 다른 자리의 숫자가 커도, 맨 앞자리가 큰 것이 무..

코딩테스트

[프로그래머스 고득점 kit] 모음사전 c++ (dfs, 사전순)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해설 dfs의 특성을 활용하여 사전순으로 완전 탐색을 진행할 수 있다. 따라서, 탐색 순서에 따라 진행하던 중, 찾고자하는 string이 나오면 해당 string의 순서를 리턴하면 된다. dfs를 통한 사전순 완전탐색으로 순서 계산 #include #include #include using namespace std; string words="AEIOU"; string ans_str..

코딩테스트

[프로그래머스 고득점 kit] 등굣길 c++ (dp+bfs)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 dp[a][b]를 시작점에서 (a,b) 지점까지 도달하는 경로의 가짓수라고 가정하자. 시작점에 1을 넣고(제자리에 있는 것 ==1개의 경로) dfs or bfs로 완전탐색을 수행한다. ( 이때, 아래 or 오른쪽으로만 이동하기에, 왔던 길을 되돌아올 일은 없다.) 만약 a,b라는 지점에서 두개의 분기점이 만난다면, (a-1,b) 와 (a,b-1) 지점이 만나게 된다. (아래 ..

코딩테스트

[PCCP 모의고사 #2] 보물 지도 c++ (bfs)

문제 링크 https://school.programmers.co.kr/learn/courses/15009/lessons/121690 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 이 문제를 보면 바로 bfs를 통한 최단거리 해결책이 떠올랐을 것이다.(1칸 이동의 비용이 '1'로 고정된 단위 길이이기에, 다익스트라를 사용할 필요가 없다.) 이 문제는 약간의 변형으로, 일회성으로 2칸을 이동가능한 "신발" 이 존재하기에, 이를 고려해야한다. 일반적으로 point가 2개의 좌표값, 거리만 있는 것에 반해, 여기서는 일회성 아이템인 "신발" 의 사용 ..

코딩테스트

[PCCP 모의고사 #2] 카페 확장 c++ (큐)

문제 링크 https://school.programmers.co.kr/learn/courses/15009/lessons/121689 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 이런류의 문제는 너무 반례가 많이 생겨서 왠만하면 노가다로 푸는게 가장 안전한 것 같다. ( 예상치 못한 케이스 걸릴 바엔.. ) 결국 매번 고객이 진입하는 시간마다, 해당 고객을 포함해서 몇명의 고객이 매장 내 있는지 구하고, 그 중 최대 값을 출력하였다. 고객이 진입하는 시간대의 총 인원 수만 고려해도 최대 인원이 나오는 이유는? '인원이 추가되는 시간' 이기 때문..

코딩테스트

PCCP 모의고사 1] 4번 운영체제 c++ (우선순위 큐)

https://school.programmers.co.kr/learn/courses/15008/lessons/121686# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해설 우선, 아무 생각 없이 우선순위, 실행 시간, 입력 들어온 순서, 실행 순서 가 낮은 순으로 우선순위 큐에 넣고 그대로 pop()해가며 답을 구하면 될 줄 알았지만, 이렇게는 해결할 수 없다.( 만약 첫 프로그램이 5초에 종료 되었는데, 가장 우선순위가 높은 프로그램이 8초에 시작한다고 5~8초에 아무도 실행하지 않는 반례가 발생한다.) 즉, 프로그램의 priority가 높고,..

코앤미
'코딩테스트' 카테고리의 글 목록 (3 Page)