코드리뷰(127)
-
[python_파이썬_공배수 시간복잡도_유클리드호제법]백준_1934번_최소공배수_풀이
공부하는허딩크 : https://www.youtube.com/live/0PBsmU7Tfk4?feature=shared일단 수학적 지식 없이 코드를 작성해보자. 개인적으로 함수나 알고리즘 없이 생각나는대로 작성하는 것을 선호한다. 파이썬 프로그램을 돌려도 한참 뒤에 출력이 된다 => 그래서 코드가 오류인줄 알았음 import sys input = sys.stdin.readline #최소공배수: 알고리즘 없이 그냥 생각나는대로.... T = int(input()) for _ in range(T): A, B = map(int, input().split()) A, B = min(A, B), max(A, B) B_list = [] cnt = 1 while A * cnt not in B_list: B_list.ap..
2024.05.12 -
[python_파이썬]백준_11478번_서로 다른 부분 문자열의 개수_풀이
공부하는허딩크 : https://www.youtube.com/live/0PBsmU7Tfk4?feature=shared보기보다 쉽지 않은 문제다."일단 연속된 일부분"이라는 단어에 주목해야 한다. => 이게 아니면 실버등급의 문제가 아닌듯... 즉, combinations조합으로 모든 조합을 뽑아내는것이 아니라, 연속된 글자여야 한다는 것이다. combinations로 쉽게 조합을 가져 올 수 있을 것으로 예상했으나 아예 방향을 잘못 잡음.import sysimport itertoolsinput = sys.stdin.readlineS = input().strip()s = set()for i in range(1, len(S) + 1): s.add(itertools.combinations(S, i))fo..
2024.05.11 -
[python_파이썬_pass]백준_1269번_대칭 차집합_풀이
공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared 함수만 알면 정말 깔끔하게 해결 할 수 있다. 직전 문제에서 해당 함수를 봤기 때문에 해결할 수 있었다.집합 함수 관련 정리 : https://heodinkcodingdiary.tistory.com/53 [python_파이썬_pass_집합 관련 함수 설명]백준_1764번_듣보잡_풀이공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared 2개의 입력값을 비교해서 2번 나오면 사전순으로 출력하는 문제이다.처음에 기존 방식처럼 N과 M의 입력값들을 list로 구분하려고 방heodinkcodingdiary.tistory.comimpo..
2024.05.11 -
[python_파이썬_pass_집합 관련 함수 설명]백준_1764번_듣보잡_풀이
공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared 2개의 입력값을 비교해서 2번 나오면 사전순으로 출력하는 문제이다.처음에 기존 방식처럼 N과 M의 입력값들을 list로 구분하려고 방향을 잡았으나 굳이 그럴 필요 없이 입력을 받을때마다 중복을 검사하는 코드로 만들었다. 시간 제한이 있기 때문에 최대한 이중for문과 list를 탐색하는 방법을 사용하지 않았다.dict를 한번 배워두니 훨씬 편하네.import sysinput = sys.stdin.readlineN, M = map(int, input().split())everyone = {}check = []for _ in range(N + M): name = input().strip(..
2024.05.11 -
[python_파이썬_pass]백준_10816번_숫자 카드2_풀이
공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared 10815번 숫자카드를 풀었다면 이것도 바로 해결할 수 있다.방법은 동일하다. dict를 활용해서 key값에 해당하는 value값을 불러오면 된다.단, key값이 없을 경우 error를 어떻게 대응하는지 2가지 방법으로 해결했다. map으로 받을때 리스트로 변환하기 위해서 [map()]이렇게 하면 안된다. 꼭 list(map())으로 하자. => {: 1}처음에 N_list로 가지고 있는 카드의 숫자를 리스트로 만들어 주고 이걸 dict로 전환한다. 이때 동일한 숫자는 value에 +1을 한다try except로 M_list를 불러오면서 dict에 key값이 없으면 0을 출력, key값이..
2024.05.11 -
[python_파이썬]백준_1620번_나는야 포켓몬 마스터 이다솜_풀이
공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared문제가 너무 길다. 다 필요 없고 입력과 출력 조건만 보면 된다. 결론은 도감에 수록되어 있는 몬스터들이 있다. 그 다음 문제로 내는 몬스터 이름과 숫자가 도감에 있는지 여부 및 출력하는 것이다. 시간제한 2초로 도감을 list로 만들어서 enumerate로 인덱스와 값을 찾아서 문제를 풀기에는 일단 시간초과가 나올 것으로 예상되었다. 일단 도감을 dict로 만들어주고 문제를 하나씩 받아서 value와 key값을 비교 후 출력함 => 이중for문 사용#시간초과 : 이중for문을 풀어야함.N, M = map(int, input().split())monster = {}for i in rang..
2024.05.11