분류 전체보기 71

[백준 파이썬(python) 2231번 문제] (분해합)

더보기 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 설명 완전탐색 문제 1부터 입력받은 숫자까지 돌리면서 그 합계를 구해 생성자를 찾는 ..

PS 2023.08.18

[백준 파이썬(python) 2309번 문제] (일곱 난쟁이)

문제 설명 완전탐색 문제 for문을 7번을 돌던지(7명을 뽑아서 100되는지 확인), 2번을 돌던지(2명을 뽑아서 총합에서 제외했을때 100 되는지 확인) 해야하는 문제 하지만 사기 파이썬은 조합 기능을 지원함 combination(배열,뽑을 수) 코드 import sys from itertools import combinations heights = [] for _ in range(9): height = int(sys.stdin.readline()) heights.append(height) for i in combinations(heights, 7): if sum(i) == 100: for j in sorted(i): print(j) break 주의할 점은 답을 찾은 직후 break로 프로그램 종료해야..

PS 2023.08.17

[백준 파이썬(python) 14425번 문제] [문자열 집합]

문제 설명 N개의 문자를 받아 집합에 담고(리스트도 가능할 듯하다) M개의 문자를 받을 때마다 집합에 있는지 확인해서 카운트하면 되는 문제 코드 import sys N, M = map(int, sys.stdin.readline().split()) a = set() cnt = 0 for _ in range(N): word = sys.stdin.readline().rstrip() a.add(word) for _ in range(M): word = sys.stdin.readline().rstrip() if word in a: cnt += 1 print(cnt)

PS 2023.08.17

[백준 파이썬(python) 1620번 문제] [나는야 포켓몬 마스터 이다솜]

문제 설명 딕셔너리를 사용하는 문제 포켓몬 도감을 딕셔너리에 저장할때 키: 밸류 쌍을 밸류: 키 로 봐꿔서 포켓몬당 2번 저장해서 푸는 방식 (다만 이게 최선의 방법인지는 잘 모르겠음, 밸류를 입력해서 해당하는 키들을 반환하는 기능을 넣어주면 안되나...? db를 다루는 사람들은 이 문제를 어떻게 해결할까?) 코드 import sys N, M = map(int, sys.stdin.readline().split()) pokemons = dict() for i in range(1, N + 1): pokemon = sys.stdin.readline().rstrip() pokemons[str(i)] = pokemon pokemons[pokemon] = str(i) for j in range(M): ipt = s..

PS 2023.08.17

[백준 파이썬(python) 4949번 문제] [균형잡힌 세상]

문제 설명 전형적인 스택 문제 (,[ 기호는 스택에 쌓아두고 ) ] 기호가 들어올때 짝 맞는지 확인해서 pop으로 제거해준다 조건에 맞지 않으면 그냥 스택에 쌓아서 마지막에 스택의 요소가 남아있다면 no를 출력해준다 코드 import sys while True: stk = [] sentence = sys.stdin.readline().rstrip() if sentence == ".": break for char in sentence: if char == "(" or char == "[": stk.append(char) elif char == "]": if len(stk) != 0 and stk[-1] == "[": stk.pop() else: stk.append(char) elif char == ")":..

PS/스택(stack) 2023.08.17

[백준 파이썬(python) 1764번 문제] 듣보잡

문제 설명 집합의 개념을 이용해서 푸는 문제 파이썬에서는 친절하게 집합을 제공하고 손쉽게 합집합 교집합 여집합 등을 구할 수 있다 코드 import sys N, M = map(int, sys.stdin.readline().split()) a = set() b = set() for _ in range(N): person = sys.stdin.readline().rstrip() a.add(person) for _ in range(M): person = sys.stdin.readline().rstrip() b.add(person) c = list(a & b) c.sort() print(len(c)) for person in c: print(person)

PS 2023.08.17

[부스트캠프 AI Tech 프리코스 6강] File / Exception / Log Handling

예외처리(exception handling) ZeroDivisionError 와 같은 빌트인 에러로 잡고 처리하지 못한 나머지 에러는 Exception으로 잡는다 물론 모든 에러를 Exception으로 잡을 수 있는데 어디서 에러가 발생했는지 바로 확인할 수 없기 때문에 좋은 코드가 아니다 raise를 사용해서 에러를 발생 시킬 수 있다 File Handling Binary 파일 해당 파일을 열기위한 프로그램이 따로 있는 경우 Text파일 인간이 알아 볼 수 있는 형태로 되어있어 메모장 프로그램으로 열 수 있는 경우 with 구문으로 쓰면 close()를 안써도 됨 shutill (파일을 옮길때 사용) join을 쓰는 이유 윈도우는 '\\'으로 위치를 지정하지만 맥에서는 다르기 때문에 join으로 경로를..

[부스트캠프 AI Tech 프리코스 5강] Module and Project

모듈 모듈은 레고 블록이라고 생가하면 됨 패키지는 이런 레고블록들을 잘 정리해서 모아둔 박스 파이썬에서는 패키지가 많고 잘 돼있어서 블록 조립하듯 뽑아서 만들면 됨 __name__ == '__main__' 이 없다면 위의 모듈을 import할때 자동으로 print가 실행됨 이를 방지하고자 __name__ 사용 모듈의 호출방법 3가지 가장 위에 있는 'import 모듈명'으로 사용하는게 좋음 코드를 직관적으로(코드가 어디서 왔는지) 볼 수 있기 때문 패키지의 정의 폴더별로 __init__을 설정하여 패키지(모듈 모음집)라는 것을 알리는 것, 파이썬 3.3버전부터는 필요없지만 그래도 해주는게 관례 가상환경 필요한 패키지를 이것저것 다 설치하다보면 언젠가 충돌이 일어날 수 있고, 비효율적임 둘중해서는 cond..