반응형

파이썬 코테 62

[파이썬, Python] 백준 1931: 회의실 배정

문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) res = [] for i in range(n): a, b = map(int, input().split()) res.append((a,b)) res.sort(key=lambda x: (x[1],x[0])) cnt = 0 end_time = 0 for i,j in res: if i >= end_time: cnt += 1 end_time = j print(cnt) 설명 우선 각 값을 입력받고, key를 이용해..

[파이썬, Python] 백준 1037: 약수

문제 https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) num = list(map(int, input().split())) if n == 1: print(num[0]**2) else: print(min(num)*max(num)) 설명 일반적인 입력의 경우 num 값의 최솟값과 최댓값의 곱이 정답이다. 예제 2와 같은 경우가 예외적인 케이..

[파이썬, Python] 백준 1463: 1로 만들기

문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 n = int(input()) d = [0] * (n+1) for i in range(2, n+1): d[i] = d[i-1] + 1 if i % 3 == 0: d[i] = min(d[i], d[i//3]+1) if i % 2 == 0: d[i] = min(d[i], d[i//2]+1) print(d[n]) 설명 우선 n+1 개 만큼의 0으로 이루어진 리스트를 만들어준다. 이후 i번째의 값을 i-1번째에 1을 더해준 값으로 우선 지정해준다. 만약 i가 2혹은 3으로 나누어지는 수라면 이 수와 2혹은 ..

[파이썬, Python] 백준 2579: 계단 오르기

문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n = int(input()) score = [0 for _ in range(n+1)] stair = [0 for _ in range(n+1)] for i in range(1, n+1): stair[i] = int(input()) score[1] = stair[1] for i in range(2, n+1): if i == 2: score[i] = score[1] + stair[2] elif i ==..

[파이썬, Python] 백준 4153: 직각삼각형

문제 https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 코드 while True: nums = list(map(int, input().split())) if sum(nums) == 0: break max_num = max(nums) nums.remove(max(nums)) if nums[0]**2 + nums[1]**2 == max_num**2: print("right") else: print("wrong") 설명 직각 삼각형의 변의 길이는 피타고라스의 정리를 이..

[파이썬, Python] 백준 1085: 직사각형에서 탈출

문제 https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 코드 x, y, w, h = map(int, input().split()) print(min([x, y, w-x, h-y])) 설명 한수가 지금 x, y에 위치하므로 직사각형의 경계선까지 가는 최단 거리는 가장 가까운 변까지의 일직선 거리다. 이를 구하기 위해 [x, y, w-x, h-y]의 값 중에 최솟값을 출력하면 된다. 즉, 밑변과 양 옆 변까지의 길이 중 최솟값을 ..

[파이썬, Python] 백준 11478: 서로 다른 부분 문자열의 개수

문제 https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 코드 s = input() text = set() for i in range(len(s)): for j in range(i, len(s)): text.add(s[i:j+1]) print(len(text)) 설명 이중 반복문을 통해 해결했다. 우선 i의 범위를 s의 개수로 잡아주고, j의 범위를 i부터 s의 개수로 잡아주어 모든 문자열을 돌 수 있게 하고, i부터 j+1까지의 범위를 text에 추가하여 부분 문자열을 구한다. 이 때, text는 set 형태의 자..

[파이썬, Python] 백준 1269: 대칭 차집합

문제 https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) a = set(map(int, input().split())) b = set(map(int, input().split())) print(len(a-b)+len(b-a)) 설명 set을 통해서 집합의 계산을 통해 풀이했다. set은 파이썬에서 중복을 제거할 ..

[파이썬, Python] 백준 1764: 듣보잡

문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 코드 n, m = map(int, input().split()) a = set() for i in range(n): a.add(input()) b = set() for i in range(m): b.add(input()) result = sorted(list(a & b)) print(len(result)) for i in result: print(i) 설명 우선 set을 통해 각 명단을 받..

[파이썬, Python] 백준 10816: 숫자 카드 2

문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 코드 import sys input = sys.stdin.readline n = input() card_list = list(map(int,input().split())) m = input() num_list = list(map(int,input().split())) cnt = {} for i in card_list: if i in cnt: cnt[i] +=..

반응형