BOJ (77) 썸네일형 리스트형 BOJ : 1929 소수구하기 (파이썬) 소스코드 import sys import math n1,n2 = map(int, sys.stdin.readline().split()) for i in range(n1,n2+1) : c = 0 for j in range(2, int(math.sqrt(i)) + 1) : if i % j == 0 : c+=1 break if c == 0 and i > 1 : print(i) pass 풀이 앞에 다뤘던 소수문제랑 똑같이 코드를 작성하면 시간초과에 걸리게 됩니다. 그래서 소수일때 다음 수를 나누는것이 아닌 break를 통해 소수가 아니면 바로 다음 수로 넘어가게끔 설계해줍니다. 그 수의 제곱근까지만 소수인지 판별하면 된다는 최적화된 알고리즘을 통해 구현했습니다. 문제 https://www.acmicpc.net/p.. BOJ : 11653 소인수분해 (파이썬) 소스코드 import sys n = int(sys.stdin.readline()) i = 2 while True : if n % i != 0 : i+=1 if n < i : break else : n //=i print(i) 풀이 나눗셈을 계속 해주며 i값이 n을 넘을때 break를 걸어줍니다. 문제 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net BOJ : 2581 소수 (파이썬) 소스코드 import sys n1 = int(sys.stdin.readline()) n2 = int(sys.stdin.readline()) lst = [] for i in range(n1,n2+1) : c=0 if i == 2 : lst.append(i) elif i == 1 : pass else : for j in range(2,i) : if i % j == 0 : c+=1 if c == 0 : lst.append(i) else : pass if len(lst) == 0 : print('-1') else : print(int(sum(lst)),end='\n') print(int(min(lst))) 풀이 소수를 찾아서 sum, min 내장함수를 사용하면 됩니다. 문제 https://www.acmicpc... BOJ : 11870 좌표압축 (파이썬) 소스코드 import sys n = int(sys.stdin.readline()) lst = list(map(int,sys.stdin.readline().split())) s = sorted(lst) dict = {} a=0 for i in s : if(dict.get(i) == None) : dict[i] = a a+=1 for i in lst : print(dict[i],end=' ') 풀이 딕셔너리를 구현해서 정렬된 리스트 (오름차순)을 순회 하면서 존재하지 않으면 0부터 숫자를 value값에 넣어줌으로서 답을 얻을 수 있습니다. 딕셔너리.get(i) 가 존재하지 않을때 None 을 리턴해주는 것을 기억해야겠다! 문제 https://www.acmicpc.net/problem/18870 18870번:.. BOJ : 2108 통계학 (파이썬) 소스코드 import sys from collections import Counter n = int(sys.stdin.readline()) lst = [] for i in range(n) : num = int(sys.stdin.readline()) lst.append(num) lst.sort() print(round(sum(lst)/n)) middleIndex = n // 2 print(lst[middleIndex]) chlqls = Counter(lst).most_common() if len(chlqls) > 1 : if chlqls[0][1] == chlqls[1][1] : print(chlqls[1][0]) else : print(chlqls[0][0]) else : print(chlqls[0][0.. BOJ : 2587 대표값2 (파이썬) 소스코드 import sys lst = [] for i in range(5) : n = int(sys.stdin.readline()) lst.append(n) lst.sort() print(int(sum(lst)/5)) print(lst[2]) 풀이 sum 내장함수를 알면 쉽게 끝나는 문제인것 같다. 문제 https://www.acmicpc.net/problem/2587 2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net BOJ : 10250 acm호텔 (파이썬) 소스코드 import sys t = int(sys.stdin.readline()) for i in range(t) : #h층 w방수 n몇번째 손님 h, w, n = map(int,sys.stdin.readline().split()) c = 1 while n > h : n-=h c+=1 print(n,end='') if c >= 10 : print(c) else : print('0',end='') print(c) 풀이 층을 다 훝고 위로 올라가는 문제라 손님 번호에서 층을 뺀 후 뺄때마다 변수 하나를 계속 더해주면서 호수를 추가해주었습니다. 지금 생각해보니 while 문 말고 나눗셈을 통해 구하는게 더 좋았을거 같기도합니다.. 문제 https://www.acmicpc.net/problem/10250 102.. BOJ : 1193 분수찾기(파이썬) 소스코드 import sys n = int(sys.stdin.readline()) num =0 c=0 while n > num : c+=1 num +=c if c % 2 == 0 : print(c-(num-n),end='') print('/',end='') print(num-n+1) else : print(num-n+1,end='') print('/',end='') print(c-(num-n)) 풀이 지그재그로 움직이는 규칙이 처음에는 이해하기 어려웠는데, 곰곰히 생각해보니 특정한 경우일때만 앞뒤 숫자를 바꿔주면 된다는 규칙을 알게되어서 해결할 수 있었다. 분자 + 분모의 총합이 1 씩 늘어나는데 이때 분수의 갯수는 1개씩 증가하는 규칙을 가지게 됩니다. while 문을 통해 c로 분수가 몇개인지 세준 .. 이전 1 ··· 5 6 7 8 9 10 다음