반응형

개발 연습장/백준 문제풀이 221

[파이썬, Python] 백준 10974: 모든 순열

문제 https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 코드 n = int(input()) s = [] def dfs(): if len(s) == n: print(' '.join(map(str,s))) return for i in range(1, n+1): if i not in s: s.append(i) dfs() s.pop() dfs() 설명 https://looancheong.tistory.com/147 [파이썬, Python] 백준 15649: N과 M (1) 문제 https://www.acmicpc.net/problem/1564..

[파이썬, Python] 백준 9372: 상근이의 여행

문제 https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) def dfs(idx, cnt): visited[idx] = 1 for i in graph[idx]: if visited[i] == 0: cnt = dfs(i, cnt+1) return cnt t = int(input()) for ..

[파이썬, Python] 백준 1049: 기타줄

문제 https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) pack = list() one = list() for _ in range(m): a, b = map(int, input().split()) pack.append(a) one.append(b) min_pack, min_one = min(pack), min(o..

[파이썬, Python] 백준 1021: 회전하는 큐

문제 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 코드 from collections import deque import sys input = sys.stdin.readline n, m = map(int, input().split()) idx = list(map(int, input().split())) q = deque(i for i in range(1, n+1)) cnt = 0 for i in idx: while True: if q[0..

[파이썬, Python] 백준 11053: 가장 긴 증가하는 부분 수열

문제 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 코드 n = int(input()) num = list(map(int, input().split())) dp = [1 for i in range(n)] for i in range(n): for j in range(i): if num[i] > num[j]: dp[i] = max(dp[i], dp[j]+1) print..

[파이썬, Python] 백준 9656: 돌 게임 2

문제 https://www.acmicpc.net/problem/9656 9656번: 돌 게임 2 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 코드 n = int(input()) if n % 2 == 0: print("SK") else: print("CY") 설명 https://looancheong.tistory.com/176 [파이썬, Python] 백준 9655: 돌 게임 문제 https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 코드 n = int(input()) if n % 2 == 0: print("CY")..

[파이썬, Python] 백준 1120: 문자열

문제 https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 코드 a, b = input().split() ans = list() for i in range(len(b) - len(a) + 1): cnt = 0 for j in range(len(a)): if a[j] != b[i+j]: cnt += 1 ans.append(cnt) print(min(ans)) 설명 우선 각 입력값을 받아준다. b의 개수에서 a의 ..

[파이썬, Python] 백준 9375: 패션왕 신해빈

문제 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 코드 import sys input = sys.stdin.readline t = int(input()) for i in range(t): ans = 1 clothes = dict() n = int(input()) for i in range(n): _, a = input().split() if a no..

[파이썬, Python] 백준 2193: 이친수

문제 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 코드 n = int(input()) dp = [0] * (n + 1) dp[1] = 1 for i in range(2, n+1): dp[i] = dp[i-2] + dp[i-1] print(dp[n]) 설명 규칙을 찾아서 해결하는 dp 문제였다. n = 1 일 때, [1] n = 2 일 때, [10] n = 3 일 때, [100][101] n = 4 일 때, [1000][1001][..

[파이썬, Python] 백준 1735: 분수 합

문제 https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 코드 import math a, b = map(int, input().split()) c, d = map(int, input().split()) n = math.gcd(a*d + c*b, b*d) print((a*d + c*b)//n, b*d//n) 설명 단순한 방식으로 접근했다. 먼저 통분을 통해서 더해주었다. 이후 분자와 분모의 최대공약수로 나누어주어 해결했다.

반응형