본문 바로가기

반응형

파이썬

[파이썬] python EOF (입력 끝날 때까지 출력하기) 입력이 끝날 때까지 읽어들이려면 except (예외처리)를 이용하면 된다. 정상적일 때는 try 문의 내용을 수행하다가 오류가 발생하면 except 문의 내용을 처리한다. 아래와 같이 사용하면 된다. 아래의 코드는 입력이 끝날 때까지 입력을 받아서 그대로 출력하는 코드이다. while True: try: n = input() if n == "": break print(n) except: break 더보기
[백준] 11718번 - 그대로 출력하기 (파이썬) 1. 문제 2. 코드 while True: try: n = input() if n == "": break print(n) except: break 3. 풀이 try, except를 사용하면 eof 가 나올 때 break를 할 수가 있다. 더보기
[백준] 1094번 - 막대기 (파이썬) 1. 문제 2. 코드 l = [1, 2, 4, 8, 16, 32, 64] n = int(input()) cnt = 0 for i in range(len(l)-1, -1, -1): if n >= l[i]: cnt += 1 n -= l[i] print(cnt) 3. 풀이 별 거 없는 문제이다. 64를 반으로 계속 잘랐을 때 나오는 막대의 길이(l 리스트)로 그리디처럼 풀면 된다. 더보기
[백준] 17213번 - 과일 서리 (파이썬) (feat. 중복조합 공식) 1. 문제 2. 코드 n = int(input()) m = int(input()) temp = m - n za = 1 mo = 1 for i in range(1, temp+n): za *= i for i in range(1, temp+1): mo *= i for i in range(1, n): mo *= i print(int(za/mo)) 3. 풀이 중복조합을 이용하는 문제. 중복조합 공식은 아래와 같다. 여기에서 n은 선택지의 개수를, k는 중복을 허용하여 선택할 개수를 의미한다. 예를 들어 3개 중 4개를 중복을 허용하여 뽑는다면 3H4이다. nHk = (k + n-1)! / k!(n-1)! 이다. 3H4 = 6! / 4!2! = 15가 된다. 참조 사이트는 https://kenadams.tistor.. 더보기
[백준] 3273번 - 두 수의 합 (파이썬) 1. 문제 2. 코드 n = int(input()) l = list(map(int, input().split())) x = int(input()) cnt = 0 l.sort() left = 0 right = n-1 while True: if l[left] + l[right] == x: cnt += 1 right -= 1 elif l[left] + l[right] > x: right -= 1 else: left += 1 if left >= right: break print(cnt) 3. 풀이 투포인터(left, right)를 사용하는 문제. 우선 받은 값을 정렬한다. l[left] + l[right]가 원하는 값이면 cnt를 증가시키고, right를 이동한다. 원하는 값보다 적으면 합이 더 커져야 하기 때.. 더보기
[백준] 1476 - 날짜 계산 (파이썬) 1. 문제 2. 코드 e, s, m = map(int, input().split()) cnt = 1 e_t = 1 s_t = 1 m_t = 1 while True: if e_t == e and s_t == s and m_t == m: break if cnt >= 7980: break e_t += 1 s_t += 1 m_t += 1 cnt += 1 if e_t == 16: e_t = 1 if s_t == 29: s_t = 1 if m_t == 20: m_t = 1 print(cnt) 3 .풀이 브루프포스 문제. 년도를 1부터 증가시키면서 값을 찾으면 된다. 더보기
[백준] 3135번 - 라디오 1. 문제 2. 코드 a, b = map(int, input().split()) n = int(input()) a_b = abs(b-a) b_temp = abs(b-a) for i in range(n): temp = int(input()) if abs(temp-b) < b_temp: b_temp = abs(temp-b) if b_temp < a_b: a_b = abs(b_temp) + 1 print(a_b) 3. 풀이 그리디 알고리즘을 사용하는 문제. b와 가장 가까운 즐겨찾기 주파수로 이동해서 b와 그 주파수와의 거리를 구하면 된다. 단, 이 때 가장 가까운 즐겨찾기 주파수보다 a에서 b의 거리가 더 적다면 그냥 abs(a-b)를 해주면 된다. 더보기
[백준] 16435번 - 스네이크버드 1. 문제 2. 코드 n, l = map(int, input().split()) h = list(map(int, input().split())) h.sort() for i in range(n): if h[i] 더보기

반응형