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

문제 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제풀이 문제를 제대로 보지 않아 불필요한 for문을 썼다. 처음에는 동전이 1, 8, 10원이 있을 때, K가 16이라면 8+8=2의 경우를 생각해서 for문을 써서 모든 경우를 탐색하게 했다. 하지만 A[i]는 A[i-1]의 배수이기 때문에 위의 예시는 나올 수 없다. for (idx = N - 1; idx >= 0; --i..

문제 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제풀이 N=5일때 맨 아래 5번 원판을 세번째 장대로 옮겨야한다. start를 시작 장대, end를 목표 장대, via를 start->end로 옮기기 위해 거치는 장대로 둔다. 5번 장대를 세번째 장대로 옮기기 위해서는 1~4번 원판을 2로 옮겨야 한다. 따라서 3번을 거쳐 2번으로 두기 때문에 hanoi(N, start, via, end)라는 함수가 있으면 hanoi(N-1,..

문제 https://www.acmicpc.net/problem/1517 1517번: 버블 소트 첫째 줄에 N(1≤N≤500,000)이 주어진다. 다음 줄에는 N개의 정수로 A[1], A[2], …, A[N]이 주어진다. 각각의 A[i]는 0≤|A[i]|≤1,000,000,000의 범위에 들어있다. www.acmicpc.net 문제풀이 버블 소트는 https://terms.naver.com/entry.naver?docId=2270437&cid=51173&categoryId=51173 버블 정렬 버블 정렬(bubble sort)은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내며 정렬하는 방식이다. 버블 정렬의 동작 과정을 [그림 8-3]의 데이터를 이용해서 살펴보자. ① 첫 번째 term..

문제 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 문제풀이 N=3일 때 모양이다. N이 몇이든 이 모양이 기본이 되는 문제이다. Nx(N*2-1) 행렬이다. N=3일 때 y=0, x=3-1인 부분이 기준점이 되므로 [y][x] = *, [y+1][x-1], [y+1][x+1] = *, [y+1][x-2] ~ [y+1][x+2] = *이라는 기본 형태를 잡아준다. N=6일 때 모양이다. Nx(N*2-1) 행렬이다. 기준점이 (0, N-1)이고, 또 다른 점은 (0+3, N-4), (0+3, N+..

문제 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제풀이 N이 9 이상일 때 0~8의 모양이다. 먼저 N이 몇이든 (1, 1), (1, 4), (1, 7), (4, 1), (4, 4), (4, 7),... y%3=1, x%3=1인 좌표는 공백 1칸을 출력한다. 따라서 좌표를 3으로 나눈 나머지가 1이면 공백을 출력하도록 가장 먼저 조건을 걸어둔다. 그다음은 가운데 3x3 짜리 공백을 구하는 조건을 구해야 한다. ..

문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 문제풀이 해당 좌표 X보다 작은 좌표 X가 몇 개 있는지를 출력하는 문제이다. 중복된 X는 개수에 포함이 되지 않는 것 같다. 처음에는 단순하게 for문을 두 번 사용하여 풀고, 이분 탐색으로 풀어봤는데 이중 for문은 시간 초과가, 이분 탐색은 잘 되긴 했지만 시간을 더 줄이기 위해 upper_bound를 사용했다. 입력받는 좌표들을 저장하..

문제 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 문제풀이 비트 마스크를 이용하여 푸는 문제이다. arr1 배열과 arr2 배열의 or연산을 해서 두 배열중 하나라도 1이 있으면 해당 자리는 1이 된다. 그다음 해당 숫자가 1이면 #을, 0이면 공백 1칸을 출력하는 문제이다. arr1 [idx] |= arr2 [idx]을 하여 비트 or연산을 arr1배열에 집어넣는다. for (idx2 = n - ..

문제 https://programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 문제풀이 배열의 값을 divistor로 나눈 나머지가 0이면 answer에 push 하면 된다. 입출력 예에서 return부분을 보면 항상 정렬이 되어있으므로 처음에 arr배열을 정렬해야 한다. answer을 return 하기 전에 비어있을 경우 -1을 push 한다. 코드 #include..

문제 https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 문제풀이 연달아 같은 숫자를 출력하지만 않으면 중복된 숫자는 있을 수 있다. 먼저 첫 번째 숫자를 answer에 push 한 뒤, answer의 마지막 원소와 배열의 인덱스 값을 확인하면 된다. 만약 같으면 넘어가고, 다를 경우에만 answer에 push 한다. 코드 #include #include using namespace s..