Adventure Time - Jake bogyoi's Dev note
본문 바로가기

전체 글90

[백준/python] 11653 소인수분해: 소인수분해가 끝날 조건을 생각해보자 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net n= int(input()) r1=n r2=1 i=2 while(1): if n%i==0: n=n//i print(i) r2*=i else: i+=1 if r1==r2: break 성공! 2로 계속 나눠 본다 -> 2로 안 나눠떨어지면 1을 더해서 3으로 나눠본다 -> 3으로 안 나눠떨어지면 1을 더해서 4로 나눠본다 -> ... 이때 나눈 값들은 r2라는 변수에 곱해서 저장해준다. 이 r2가 처음에 입력한 수(n=r1)와 같게되면 while문을 break해준다. 이 방법은 for i in range(2, n): 과.. 2023. 10. 25.
[백준/python] 2580 소수: 1트 코드 왜 틀렸었던걸까 import sys N=int(sys.stdin.readline()) M=int(sys.stdin.readline()) arr=[] for i in range(N,M+1): if i==1: break elif i==2: arr.append(i) for j in range(2,i): if i%j==0: break if j==i-1: arr.append(i) if len(arr)==0: print('-1') else: print(sum(arr)) print(min(arr)) 1트 근데 틀렸다고 나옴 뭐지 replit에서 실행해보면 맞게 나오는데 시간복잡도가 큰가? 그 경우는 런타임 오류로 나오는 줄 알았는데.. 흠 import sys N=int(sys.stdin.readline()) M=int(sys.std.. 2023. 10. 25.
[백준/python] 1978 소수찾기: import sys arr=[] n=int(sys.stdin.readline()) arr=list(map(int, sys.stdin.readline().split())) cnt=0 for i in arr: if i==1: #1은 소수가 아님 continue elif i==2: #2는 소수임 cnt+=1 else: for j in range(2,i): if i%j==0: #딱 나눠떨어지는 수가 하나라도 있으면 소수가 아님 break if j==i-1: #for-loop를 다 도는동안 딱 나눠떨어지는 수가 없었다면(즉, 약수가 없다) 소수임 cnt+=1 print(cnt) #소수 개수 출력 처음에 작성한 코드이다. 그런데 i의 모든 약수는 i/2보다 작다. 고로 2부터 i-1까지 확인할 필요가 없다는 뜻. .. 2023. 10. 25.
[백준/python] 9506 약수들의 합: print()의 sep옵션, 언패킹(unpacking, *) / join기능 import sys while(1): arr=[] n=int(sys.stdin.readline()) if n==-1: break for i in range(1, n): #자신을 제외한 약수이므로 i의 범위는 n-1까지 if n%i==0: arr.append(i) if sum(arr)==n: ################### print(n,'=',end=' ') print(*arr, sep=' + ') else: print(n, 'is NOT perfect.') 다른 코드 짜는 것들은 쉬웠는데 완전수일떄의 약수들의 합을 출력하는 포맷을 어떻게 해야할지 어려웠음. print() 안에서 for-loop을 짜야하나..?? 라는 고민도 했음( arr[0], arr[1],..이런식으로 for루프를 돌며 arr의 .. 2023. 10. 25.
[백준/python] 2501 약수 구하기: import sys n, k= map(int, sys.stdin.readline().split()) arr=[] for i in range(1,n+1): if (n%i==0): arr.append(i) if len(arr) 2023. 10. 25.
[백준/python] 2563 색종이: 정사각형 넓이 구하기/ 얕은 복사에 대하여 import sys x = int(sys.stdin.readline()) #paper = [[0]*101 for i in range(101)] paper=[[0 for j in range(100)] for i in range(100)] for _ in range(x): a,b = map(int,input().split()) for i in range(10): for j in range(10): paper[a+i][b+j] = 1 r = 0 for i in paper: r += sum(i) print(r) 100 x 100의 2차원 배열의 원소를 모두 0으로 하여 만들어준다. 변길이 10cm인 정사각형이므로 이중 for-loop의 i, j는 해당 지점으로부터 10의 범위까지의 부분들을 모두 1로 바꾸어준다.. 2023. 10. 24.