본문 바로가기

코딩테스트34

[백준] 파이썬 - 1932번 : 정수 삼각형 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 실버 1. 1932번: 정수 삼각형 파이썬 풀이 풀이 방법 알고리즘 - 다이나믹 프로그래밍 1. 위에서부터 아래로 내려오면서 graph의 값을 더한다. 2. 이때, 전 graph의 값 중 최대의 값을 선택해야 된다. 3. 2번에서, 무조건 왼쪽 대각선 또는 오른쪽 대각선으로 내려와야 한다는 전제가 있다는 것을 고려한다. 3-1. 양끝단에 있는 값은 무조건 선택해야 하는 값이 정해져있음. 3-2. 그 둘을 제외한 나머지는 왼쪽 대각선 또는 오른쪽 대각선 중 최대값을 선택.. 2024. 3. 2.
[백준] python - 9020번: 골드바흐의 추측 https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 실버 2. 9020번 : 골드바흐의 추측 파이썬 풀이 접근 방식 1. '가능한 n의 골드바흐 파티션이 여러 가지인 경우에는 두 소수의 차이가 가장 작은 것을 출력한다.' 라는 제한이 존재하므로, n의 절반값에서 시작한다. (n//2) 2. 한 변수는 n//2 값에서 1씩 작아지고, 한 변수는 1씩 커지면서 각각의 변수가 모두 소수일 때를 찾는다. 코드 import math T .. 2024. 2. 3.
[백준] 파이썬 - 10819번 : 차이를 최대로 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 실버 2. 10819번 : 차이를 최대로 파이썬 풀이 풀이 방식을 설명하려고 그림을 그려보았다. 1. 리스트를 반으로 나누어, 중간을 기준으로 거리별로 플러스와 마이너스를 사용하여 인덱스를 매긴다. 2. 가장 먼 거리에 있는 쌍부터 가까워지면서, 새로운 list에 추가한다. -> 이때, 가장 먼저 넣는 쌍은 플러스부터 시작하고, 그 다음은 마이너스, 또 그 다음은 플러스로 순서가 바뀐다. (인덱스가 +, -, .. 2024. 1. 31.
[백준] 파이썬 python - 1874번 : 스택 수열 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 1874번: 스택 수열 레벨 실버 2. 스택 / 자료 구조 접근 방식 1. 가장 먼저 입력받았을 경우 - 해당 숫자까지 오름차순으로 stack에 push(+) 한 후, 해당 숫자를 pop(-) 한다. 2. stack이 비었지만, stack에 저장한 경력이 있을 경우 - 마지막으로 push한 숫자부터, 현재 입력받은 .. 2023. 12. 24.
[백준] 파이썬 python - 9095번 : 1, 2, 3 더하기 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 백준 9095번 : 1, 2, 3 더하기 레벨 실버 3 접근 방식 d[n] = d[n-1] + d[n-2] + d[n-3] 점화식을 사용한다. 코드 d = [0] * 30001 t = int(input()) for _ in range(t) : n = int(input()) for i in range(1, n+1) : if i == 1: d[1] = 1 elif i == 2 : d[2] = 2 elif i==3: d[3] = 4 else: d[i] = d[i-1] + d[i-2] + d[i-3] .. 2023. 12. 12.
[백준] 파이썬 python - 1270번 : 전쟁 - 땅 따먹기 https://www.acmicpc.net/problem/1270 1270번: 전쟁 - 땅따먹기 첫째 줄에는 땅의 개수 n(n arr[i][0]//2 : print(max_num) else: print("SYJKGW") 딕셔너리를 사용하여서 개수를 직접 구하고, .get을 사용하여서 요소의 개수가 가장 많은 요소를 골랐다. 물론 이 코드도 좀 쓰레기인 거 같은게 시간이 6444ms가 나왔다. ㅎ 하하하 최선의 코드를 더 찾아봐야될 것 같다. 절대 count와 frequency를 자주 사용하지 말자^^ 2023. 12. 7.