목록분류 전체보기 (370)
GitHubSeob

문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 문제풀이 전형적인 DFS문제이다. 입력받는 값들을 표처럼 virus벡터에 push한다. 문제에서 1번 컴퓨터 부터시작하라 했으므로 DFS(1)을 실행하여 1부터 시작한다. DFS함수를 실행했으면 visit벡터에 방문한걸 표시하고 크기만큼 반복해서 깊이탐색을 시작한다. 방문안한 노드를 발견하면 DFS를 하고 answer값에 1을 더한다. 1->2 2->3 3번 컴퓨터랑 연결된 2번 컴퓨터는 이미 방..

문제 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 문제풀이 int left_num = 10; int right_num = 11; int left_y; int left_x; int right_y; int right_x; vectorkeypad = { {1,2,3},{4,5,6},{7,8,9},{10..

문제 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제풀이 문제가 길어서 그런지 어려워보이지만 간단하다. 인형을 뽑아서 담는 벡터 basket을 선언한다. [0, 0, 0, 0, 0] [0, 0, 1, 0, 3] [0, 2, 5, 0, 1] [4, 2, 4, 4, 2] [3, 5, 1, 3, 1] 1 2 3 4 5 예제의 인형뽑기 기계이다. 0이면 비어있고 숫자가 같으면 같은인형, 다르면 다른 인형이 담겨있다. 1번에서 뽑을경우 맨..

문제 https://programmers.co.kr/learn/courses/30/lessons/76501 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 문제풀이 입력값 absoultes 길이만큼 반복문을 돌면서 signs[i]값이 true이면 answer에 absolutes값을 더하고, false이면 answer에 absolutes값을 뺀다. 코드 #include #include #include int solution(int absolutes[], size_t absolutes_le..

문제 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 문제풀이 수포자 1, 2, 3의 벡터를 선언한다. 벡터 answer의 크기만큼 반복문을 돌린다. 수포자 1은 [1, 2, 3, 4, 5]로 5개의 원소가 반복, 수포자 2는 [2, 1, 2, 3, 2, 4, 2, 5]로 8개의 원소가 반복, 수포자 3은 [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]로 10개의 원소가 반복된다. 따라서 수포자 1은 ..

문제 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제풀이 가장 긴 증가하는 부분 수열 다른 문제부터 풀면 편하다 해당 문제: https://www.acmicpc.net/problem/11053 해당 문제풀이: https://githubseob.tistory.com/17 현재 숫자가 n일 때 1부터 n-1까지 돌면서 최장 길이를 찾고 DP[n][0]에, n을 ..

문제 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 문제풀이 OXXOO OXOO OXXO OXO 포도주는 3번 연속 마실수 없다, 경우의 수에서 3번 연속 안 마시고 최댓값을 낼 수 없다. 따라서 N번째를 마신다고 가정했을 때 DP[N] = DP[i-4] + Arr[i-1] or DP[i-3] + Arr[i-1] or DP[i-3] or DP[i-2] 중 최대값에 Arr[N]값을 더한 값이다. DP[N]은 N번째를 무조건 마신다고 가정하였으므로..

문제 https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N 과 건물간의 건설순서규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 문제풀이 vectororder; vectorfoundation; vectoranswer; vectorbuilding_time; vectorvisit; int goal; order벡터는 입력을 받는 벡터이다. 숫자 2개를 입력받으면 order[y][x] 형태인데 y건물을 지으면 x 건물을 지을 수 있다는 의미이다. foundation[y][x]벡터는 x건물을 지어야 y건물을 지을 수 있다..

문제 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제풀이 자기 자신도 길이에 포함시키므로 DP 배열의 값을 1로 초기화한다. 이중 반복문을 사용하면 간단히 풀린다. DP[y]는 y까지의 수열에서 가장 긴 부분의 수열 길이를 의미한다. y는 1부터 N까지, x는 1부터 y까지 DP[y]는 DP[x]의 값들을 계속 비교하면서 가장 큰 값+1을 집어넣는다. 코드 #i..