목록백준 (176)
홍우진의 개발 일기장
문제 링크 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..
문제 링크 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 풀이 코드 S = input() count = 0 for i in range(len(S)-1): if S[i] != S[i+1]: count += 1 print((count + 1) // 2) 코드 해석 먼저 규칙을 찾는다. 0과 1의 갯수와 상관 없이 반복되는 패턴은 다음과 같다. 0 or 1 -> 0번 01 -> 1번 010 -> 1번 0101 -> 2번 01010 -> 2번 010..
문제 링크 https://www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 www.acmicpc.net 풀이 코드 n, m = map(int, input().split()) arr = [] for i in range(n): arr.append(list(input())) check = min(n, m) answer = 0 for i in range(n): for j in range(m): for k in range(check): if ((i + k) < n) and ((j + k) < m)..