목록알고리즘/백준 (204)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net 풀이 코드 for _ in range(int(input())): a = int(input()) su1 = set(map(int, input().split())) b = int(input()) su2 = list(map(int, input().split())) for n in su2: print(1 if n in su1 else 0) 코드 해석 간단하게 풀 수 있는 문제이다. 수를 받은 뒤 s..
문제 링크 https://www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net 풀이 코드 n = int(input()) arr = [0]*(n+2) arr[1] = 1 for i in range(2, n+2): arr[i] = arr[i-1] + arr[i-2] print((arr[n]+arr[n+1])*2) 코드 해석 피보나치 수열을 이용하는 문제이다. ((n번째 정사각형 한 변의 길이) + (n+1 번째 정사각형 한 변의 길이)) * 2 = 둘레 라는 둘레 증가..
문제 링크 https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 코드 n, m = map(int, input().split()) if n == 1: print(1) elif n == 2: print(min(4, (m-1)//2+1)) elif m
문제 링크 https://www.acmicpc.net/problem/5635 5635번: 생일 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 코드 li = [] for _ in range(int(input())): n, d, m, y = input().split() li.append([n, int(d), int(m), int(y)]) li.sort(key=lambda x:(x[3],x[2],x[1])) print(li[-1][0]) print(li[0][0]) 코드 해석 간단한 정렬 문제이다. li라는 리스트를 만든 뒤 입력받은 값을 n, d, m, y로 나누어서 li에 2차원 리스트 형식으로 저장..
문제 링크 https://www.acmicpc.net/problem/2331 2331번: 반복수열 첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다. www.acmicpc.net 풀이 코드 from sys import stdin A, P = map(int, stdin.readline().split()) check = [A] while True: new = 0 for i in (str(check[-1])): new += int(i) ** P if new in check: while True: if new == check.pop(): print(len(check)) exit() else: check.append(new) 코드 해석 수를 계산 할 때 마다 체크 리스트에 수를 추..
문제 링크 https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 풀이 코드 import sys input = sys.stdin.readline n = int(input()) s = dict() for i in range(n): a, b = map(str, input().split()) if b == "enter": s[a] = 1 else: del s[a] s = sorted(s.keys(), reverse=T..
문제 링크 https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 코드 N = int(input()) number_list = list(map(int, input().split())) for i in sorted(list(set(number_list))): print(i, end = ' ') 코드 해석 수를 리스트에 저장한다. 그 후 set으로 중복을 방지하고 정렬한다.
문제 링크 https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 풀이 코드 import sys input = sys.stdin.readline board = {} check = [[0]*5 for i in range(5)] for i in range(5): a = list(map(int,input().split())) for j in range(5): board[a[j]] = (i,j) tick = 0 for _ in range(5): a = list(map(in..