Algorithm Study

    [백준 파이썬] # 1620 나는야 포켓몬 마스터 이다솜

    Silver IV # 1620 나는야 포켓몬 마스터 이다솜 링크 : https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 풀이 import sys N, M = map(int, sys.stdin.readline().split()) dogam = {} for i in range(1, N+1): a = sys.stdin.readline().rstrip() dogam[i] = a dogam[a] = i for i in range..

    [백준 파이썬] # 15829 Hashing

    Bronze II # 15829 Hashing 링크 : https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 풀이 dic = {'a':1,'b':2,'c':3,'d':4,'e':5, 'f':6,'g':7,'h':8,'i':9,'j':10, 'k':11,'l':12,'m':13,'n':14,'o':15, 'p':16,'q':17,'r':18,'s':19,'t':20, 'u':21,'v':22,'w':23,'x':24,'y':25, 'z':26} r ..

    [백준 파이썬] # 4949 균형잡힌 세상

    Silver IV # 4949 균형잡힌 세상 링크 : https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 풀이 while True: text = input() # 반복문 탈출 조건 설정 if text == '.': break s = [0] # s[-1]을 이용할 때 에러 방지를 위해 s = [] 대신 사용 for i in text: if i == '(': s.append('small') elif i == ')': if s[-1] ==..

    [백준 파이썬] # 9012 괄호

    Silver IV # 9012 괄호 링크 : https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 풀이 T = int(input()) for i in range(T): text = input() cnt = 0 for i in text: if i == '(': cnt += 1 else: cnt -= 1 if cnt 0: print('NO') elif cnt == 0..

    [백준 파이썬] # 9375 패션왕 신해빈

    Silver III # 9375 패션왕 신해빈 링크 : https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 풀이 T = int(input()) for i in range(T): n = int(input()) cloth = {} for j in range(n): name, kinds = input().split() if kinds in cloth: cloth..

    [백준 파이썬] # 11723 집합

    Silver IV # 11723 집합 링크 : https://www.acmicpc.net/problem/11723 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 풀이 import sys M = int(sys.stdin.readline()) S = [0] * 21 for i in range(M): order = sys.stdin.readline().split() if order[0] == 'add': if S[int(order[1])] == 0: S[int(order[1])] = ..

    [백준 파이썬] # 17219 비밀번호 찾기

    Silver IV # 17219 비밀번호 찾기 링크 : https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 풀이 N, M = map(int, input().split()) dic = {} for i in range(N): link, password = input().split() dic[link] = password for i in range(M): order = input() if order in dic: print..

    [백준 파이썬] # 1764 듣보잡

    Silver IV # 1764 듣보잡 링크 : https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 풀이 N, M = map(int, input().split()) dic = {} for i in range(N+M): name = input() if name in dic: dic[name] += 1 else: dic[name] = 1 li = [] for key, value in dic.items(): if v >= 2: li.append(key)..

    [백준 파이썬] # 1676 팩토리얼 0의 개수

    Silver IV # 1676 팩토리얼 0의 개수 링크 : https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 import math N = int(input()) cnt = 0 f = math.factorial(N) for i in reversed(str(f)): if i == '0': cnt += 1 else: break print(cnt) 후기 math 모듈을 사용해서 팩토리얼을 구현할 수 있다. ex) math.factorial(N) = N! numpy, pandas는 코딩 테스트에서 사용할 수 없게끔 한다고 한다. 그러나..

    [백준 파이썬] # 11050 이항 계수 1

    Bronze I # 11050 이항 계수 1 링크 : https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 풀이 import math N, K = map(int, input().split()) print(math.factorial(N) // (math.factorial(K)*math.factorial(N-K))) 후기 math 모듈을 사용해서 팩토리얼을 구현할 수 있다.