본문 바로가기

Python37

list for문 python으로 알고리즘 문제를 풀면서 헤맸던 부분이 있다. list-a로 구현해놓고 for-b처럼 구현되길 바랬던 것이다. 혹시나 해서 b처럼 바꿔보니 혹시나가 역시나가 되는 그런 상황이었다,, a는 아예 똑같은 반복인 것 같다.a를 더 편하게 생각해왔지만 둘은 확실하게 다르다. a=[[0]*5]*6 print(a) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] b=[[0]*5 for _ in range(6)] print(b) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0.. 2020. 8. 21.
list 덧셈 list끼리 합치고 싶을 때가 있다. 따로 list를 생성해서 for문으로 하나하나 append 시키는 것보다 '+' 하나로 아주 깔끔하게 합쳐진다. a=[1] b=[2,3] print(a+b) #[1,2,3] 2020. 8. 21.
2309번 일곱난쟁이 문제 출처 : https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 문제를 보자마자 하나하나 다 구하기엔 정말 오래 걸리겠다고 생각이 들어 과감하게 random을 사용했다. random.sample을 사용해 7명만 무작위로 뽑힐 수 있게 했고, 이들의 합이 100이면 break를 통해 빠져나올 수 있도록 했다. (개인적으로 과감히 선택한 random으로 성공시켜 기분좋게 만들어줬던 문제 :) ) import sys, random T=[] for i in ra.. 2020. 6. 25.
6588번 골드바흐의 추측 문제 출처 : https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. www.acmicpc.net 바로 이전문제가 하나하나 소수를 찾았던 코드를 짠 문제였는데 바로 에라토스테네스의 체를 사용한 문제가 나왔다. 이 문제는 이전처럼 코드를 짜면 시간초과가 난다..! 그래서 에라토스테네스의 체를 사용하여 문제를 풀었더니 바로 성공했다! import sys result=[] s=[True]*1000001 for k in range(2,1000001): if s[k]==True: fo.. 2020. 6. 25.
1978번 소수 찾기 문제 출처 : https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 에라토스테네스의 체를 사용하지 않고 하나하나 찾아주는 코드를 짜보았다. 물론 에라토스테네스의 체를 알기 전 풀었던 문제이다 ㅎㅎ,, 하지만 이렇게 풀면 시간초과 날 확률이 매우 크기 때문에 에라토스테네스의 체를 사용하는 것을 무척이나 추천드립니다..!!! import sys T=int(input()) result=[] for _ in range(T): A=list(map(int, sys.stdin.readline().split())) for i in .. 2020. 6. 25.
1934번 최소공배수 문제 출처 : https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있� www.acmicpc.net 이전 최대공약수, 최소공배수와 비슷한 유형이다. 직접 찾아주는 코드를 짰고, 더 간단한 코드로 만들어야겠다,, 그리고 이전에도 말했듯이 백준에서 시간을 좀 더 줄이기 위해 항상 import sys를 사용한다..! import sys def solve(A): for i in range(1,min(A)+1): if not A[0]%i: if not A[1]%i: r.. 2020. 6. 25.
10430번 나머지 문제 출처 : https://www.acmicpc.net/problem/10430 10430번: 나머지 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) www.acmicpc.net 음,, 이번 문제는 딱히 풀이할 게 없는 것 같다,, 하지만 더 빠른 방법이 있을거같다..! import sys A,B,C=map(int, sys.stdin.readline().split()) print((A+B)%C) print(((A%C) + (B%C))%C) print((A*B)%C) print(((A%C) * (B%C))%C) 2020. 6. 2.
itemgetter 사용하기 sort문제를 풀 때 key=lambda x:x[1] 이런식으로 풀었었는데 내 기준으로 이것보다 간단한 itemgetter 를 알게되었다. from operator import itemgetter를 써주면 사용할 수 있다. from operator import itemgetter data = [ ("gg", 25, 11), ("sd", 342, 972), ("aa", 36, 616), ("td", 16, 234), ("oi", 95, 435) ] data.sort(key=itemgetter(0)) print(data) #[('aa', 36, 616), ('gg', 25, 11), ('oi', 95, 435), ('sd', 342, 972), ('td', 16, 234)] from operator impo.. 2020. 5. 31.
베스트앨범 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr 1차 실패 from collections import Counter def solution(genres, plays): m=[] answer=[] d={} for i,name in enumerate(genres): answer.append([i,name,plays[i]]) answer.sort(reverse=True, key=lambda x.. 2020. 5. 31.