목록코딩테스트 (122)
Deff_Dev

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 주어진 문제는 현재 날짜와 약관 별 유효기간(달), 개인정보 수집 일자가 입력되고, 이 정보를 비교하여 현재 날짜와 유효기간이 만료된 개인정보 수집 일자를 찾아 그 번호를 반환하는 문제이다. 문자열 파싱을 활용하여 구현하는 레벨 1의 문제였지만, 날짜 변환에 있어 예상치 못한 어려움이 있었다. 특히, 12월에서 1월로 넘어가는 경우와 연도가 변경되는 상황에서 문제가 발생했다. 처음에는 문자열끼리 비교하려고 했지만, 일부 테스트 케이스가 실패했다. 반례를 생각해봤고 12월에서 1월로 넘어가고 연도가 변경되..

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 주어진 문제는 달리기 경주의 최종 순위를 반환하는 문제이다. Player의 순서대로 1등부터 n등까지의 순위를 가지고, 이름이 불리면 순위가 한 단계씩 올라간다. Map을 사용하여 플레이어 별 순위를 저장하고, 이름이 불릴 때마다 해당 플레이어의 순위를 조정하는 방법으로 문제를 풀이했다. 풀이 #include #include #include // https://school.programmers.co.kr/learn/courses/30/lessons/178871 using namespace std; map..

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이 문제는 다음달에 선물을 가장 많이 받는 사람의 선물 갯수를 구하는 문제이다. 다음달에 선물을 받는 조건 이번 달에 본인이 상대방보다 선물을 많이 주었을 때 이번 달에 선물을 주고 받은 갯수가 같고 선물 지수가 높을 때 선물을 준 갯수 - 선물을 받은 갯수 = 선물 지수 해당 문제는 맵을 사용하면 비교적 쉽게 해결할 수 있지만, 맵을 생각하지 못해 문제를 해결하지 못하고 블로그를 참고하여 풀이했습니다. 풀이 사람 별 번호를 맵에 저장하고 선물 지수와 선물 지표를 구한다. 각 사람 별로 다음 달에 받는 ..

2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제 이 문제는 0과 1로 이루어진 미로에서 0은 벽을 나타내고, 1은 길을 나타낸다. 출발점은 (1, 1)이고 도착점은 (N, M)일 때, 출발점부터 도착점까지의 최소 칸 수를 출력하는 문제이다. DFS로 이 문제를 풀려고 시도했지만 해결하지 못하여 블로그의 풀이를 참고하여 BFS로 문제를 해결했습니다. DFS로 이 문제를 풀 경우, 연산이 많아져 시간초과가 나온다고 한다. 풀이 BFS를 이용하여 상하좌우로 탐색하고 목적지에 도달했을 경우 이동 거리를 출력하는 방법으로 풀이했다. #inclu..

9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 이 문제는 입력한 문자열에서 모든 괄호가 완성되면 "YES"를, 완성되지 못한다면 "NO"를 출력하는 문제이다. 스택의 top에 "("가 있고 푸시할 문자가 ")"일 때 pop을 하고, 그 이외의 경우에는 push한 뒤, 스택이 비어 있다면 "YES", 스택이 채워져 있다면 "NO"를 출력하는 방법으로 문제를 풀이했다. 풀이 #include #include #include using namespace std; int main(..

11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 이 문제는 여러 사람이 ATM에서 돈을 인출하는 데 걸리는 시간의 최솟값을 출력하는 문제이다. 최솟값이 될려면 오름차순으로 정렬한 뒤 처음부터 끝까지 더하면 된다. 풀이 #include #include #include // https://www.acmicpc.net/problem/11399 11399번 ATM using namespace std; int n; vector line; void ATM() { sort(line.begin(), line.end()); // 정렬 int resul..

1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 이 문제는 BFS를 사용하여 각 위치별 이동 시간을 계산한 후, 동생이 있는 위치에 도달할 때까지의 이동 시간을 출력하는 방법으로 풀이하면 된다. 풀이 #include #include // https://www.acmicpc.net/problem/1697 1697번 숨바꼭질 using namespace std; bool visited[100001] = { false , }; int result[100001] = { 0 , }; /..

1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 이 문제는 DFS와 BFS를 처음 공부하기에 가장 좋은 문제 중 하나다. 입력한 간선을 토대로 양방향 그래프를 만들고 시작 지점부터 DFS, BFS를 이용해 탐색하면 된다. 풀이 #include #include // https://www.acmicpc.net/problem/1260 DFS와 BFS using namespace std; int map[1001][1001] = {0, }; // 맵 bool visited[1..