알고리즘 공부 202

(Python)백준 코딩테스트 연습 - 터렛(1002)

1. 문제 https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 2. 풀이 import math import sys input = sys.stdin.readline # n : 테스트 개수 n = int(input()) for i in range(n): x1, y1, r1, x2, y2, r2 = map(int, input().split()) if x1 == x2 and y1 == y2: if r1 == r2: print(-1) elif r1 != r2: print(0) else: dist = math...

(Python)백준 코딩테스트 연습 - 좋은 단어(3986)

1. 문제 https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque # n : 문자 개수 n = int(input()) cnt = 0 for i in range(n): word = input().strip() w_deque = deque() for w in word: if len(w_deque) == 0: w_deque.append(..

(Python)백준 코딩테스트 연습 - 베스트셀러(1302)

1. 문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 팔린 책 수 n = int(input()) # n_d : 책 딕셔너리 n_d = {} for i in range(n): name = input() if name in n_d: n_d[name] += 1 else: n_d[name] = 1 n_d = sorted(n_d.items(), key=..

(Python)백준 코딩테스트 연습 - 링(3036)

1. 문제 https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 링 개수 n = int(input()) # n_l : 링 리스트 n_l = list(map(int, input().split())) for i in n_l[1:]: for j in range(i, 0, -1): if n_l[0] % j == 0 and i % j == 0: choidae = j break print('{}/{}'.f..

(Python)백준 코딩테스트 연습 - 스위치 켜고 끄기(1244)

1. 문제 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 스위치 개수 n = int(input()) # n_l : 스위치 배열 n_l = list(map(int, input().split())) # p_cnt : 사람 수 p_cnt = int(input()) for i in range(p_cnt): # print(n_l) s, s_num = map(..

(Python)백준 코딩테스트 연습 - 기타줄(1049)

1. 문제 https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 필요한 기타줄 개수, m : 브랜드 개수 n, m = map(int, input().split()) # p_m_c : 패키지 최소 가격, s_m_c : 낱개 최소 가격 p_m_c, s_m_c = 1000, 1000 for i in range(m): p_c, s_c = map(int, input(..

(Python)백준 코딩테스트 연습 - 카드(11652)

1. 문제 https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 카드 수 n = int(input()) # n_d : 카드 저장 딕셔너리 n_d = {} for i in range(n): card = int(input()) if card in n_d: n_d[card] += 1 else: n_d[card] = 1 n_d = sorted(n_d.items()..

(Python)백준 코딩테스트 연습 - 국영수(10825)

1. 문제 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 학생 수 n = int(input()) # n_l : 학생 이름과 점수를 저장할 리스트 n_l = [] for i in range(n): name, kor, eng, math = map(str, input().split()) n_l.append((name, int(kor), i..

(Python)백준 코딩테스트 연습 - 비밀번호 찾기(17219)

1. 문제 https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 저장된 사이트 주소 수, m : 비밀번호 찾으려는 사이트 주소 수 n, m = map(int, input().split()) # n_d : 사이트 저장할 dictionary n_d = {} for i in range(n): site, pw = map(str, input..

(Python)백준 코딩테스트 연습 - 접미사 배열(11656)

1. 문제 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 정렬할 문자열 n = input().strip() # n_l : 길이별 문자열 배열 n_l = [n[i:] for i in range(len(n))] n_l.sort() for i in n_l: print(i) 3. 후기 - 입력받은 문자열을 길이 별로 저장한 후 정렬하여 출력하였다.