목록Algorithm/BOJ (35)
눈송이의 개발생활
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cpMS3w/btrqunPYgAK/qqKosBzz4eA5xa47UngWvk/img.png)
문제 https://www.acmicpc.net/problem/1476 코드 E, S, M = map(int, input().split()) answer = 1 while True: # 배수가 되는 수에서 빼고 그 다음 나머지 계산 if (answer - E)%15 == 0 and (answer - S)%28 == 0 and (answer - M)%19 == 0: print(answer) break answer+=1 풀이 풀이를 생각해내는게 생각보다 오래 걸렸다. 실버5 문제인데도 꽤 어려워서(나한테는...) 내가 생각한 풀이를 완전 바꿔야 했었다. 처음에는 for문을 계속 돌면서 3 수(15, 28, 19)의 공배수를 찾는 방법으로 생각했는데 코드를 짤 수 없어서 반대로 접근해보았다. 숫자를 계속 키워..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKHk1G/btrqmqgqEQh/vsJjmmtmLc0HFH4bznagQk/img.png)
문제 https://www.acmicpc.net/problem/3085 코드 import sys input = sys.stdin.readline # 행/열에서 사탕 최대 개수 구하는 함수 def check(candies): n = len(candies) answer = 1 for i in range(n): count = 1 # 열 순회하면서 연속되는 숫자 세기 for j in range(1, n): if candies[i][j] == candies[i][j-1]: count += 1 else: count =1 if count>answer: answer = count count = 1 # 행 순회하면서 연속되는 숫자 세기 for j in range(1, n): if candies[j][i] == candi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dnwe1i/btrqmMXsDrH/rayNTbg1QZwUMNrz5Ef4e1/img.png)
문제 https://www.acmicpc.net/problem/6588 코드 import sys r = 1000000 sieve = [True for _ in range(r)] for i in range(2, int(r**0.6)): if sieve[i]: for j in range(i + i, r, i): sieve[j] = False while True: n = int(sys.stdin.readline()) if n == 0: break for k in range(3, r): if sieve[k]: if sieve[n-k]: print("%d = %d + %d"%(n , k , n-k)) break 풀이 계속 작은 조건들때문에 많이 틀린 문제이다. 문제였던 부분은.. 100000까지의 소수를 찾는 과..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dGRYLx/btrp3JFmFIV/3CyaiLXAeel0iJHZW1K3P0/img.png)
문제 https://www.acmicpc.net/problem/1929 코드 #1 - WRONG❌ def is_prime(x): for j in range(2, x): if x % j == 0: return False return True min, max = map(int, input().split()) for i in range(min, max+1): if is_prime(i): print(i) 풀이 #1 - WRONG❌ 실버2인데 너무 쉽게 풀려서 의심스러웠는데 역시나... 시간초과가 떴다. 왜 그런지 백준에 올라와 있는 질문을 검색해보니 에라토스테네스의 체를 공부하고 풀어보라는 글을 발겼했다. 공부하고 다시 풀어봐야지~ 코드 #2 def is_prime_sieve(n, start): sieve = ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mmcuS/btrpSknp1eG/ZmWS6rmYzROjikMxsXcu01/img.png)
문제 https://www.acmicpc.net/problem/17427 코드 #1 - WRONG❌ #약수의 합 구하는 함수 def f(x): global list sum=0 for i in range(1, x+1): if(x%i==0): list.append(i) for z in list: sum += z list = [] return sum list = [] totalSum =0 n = int(input()) for j in range(1, n+1): totalSum += f(j) print(totalSum) 풀이 #1 - WRONG❌ 처음에는 모든 약수를 구하고, 그 약수의 합을 또 구하는 방법으로 풀었었다. 예제5에서 시간이 조금 걸리기는 했지만 pypy로 하면 될거라고 생각하고 제출했는데 시간초..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0TStu/btrpPGjqbZq/bK6JMjxorW5nBc6lKQ5PbK/img.png)
문제 https://www.acmicpc.net/problem/13305 코드 #include #include using namespace std; long long km[100000]; long long pr[100000]; int main(){ cin.tie(0), cout.tie(0); ios_base::sync_with_stdio(0); long long total = 0; int n; cin >> n; for(int i=0; i> km[i]; } for(int i=0; i> pr[i]; } long long pr_now = pr[0]; for (int i=1; i pr[i]){ total += pr_now * km[i-1]; pr_now = pr[i]; } else{ total += pr_now..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zo8ZY/btrpP3S06q8/vAYYSDmIrLbnaEbU9Avhm1/img.png)
문제 https://www.acmicpc.net/problem/11047 코드 #include #include #include using namespace std; vector v; int main(){ cin.tie(0), cout.tie(0); ios_base::sync_with_stdio(0); int n, k, x; int count = 0; cin >> n >> k; for(int i=0; i> x ; v.push_back(x); } sort(v.begin(), v.end(), greater()); for(int i=0; i= 0){ k = k-v[i]; count++; } } cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rOtfg/btrpTgRALTQ/r1hShxLu0m6p56ibeEkkrk/img.png)
문제 https://www.acmicpc.net/problem/11568 코드 #include #include using namespace std; int dp[1001]; int arr[1001]; int main(){ cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); int n; cin >> n; for(int i=0; i> arr[i]; dp[i]=1; } //LIS 사용 int result = 1; for(int i=0; i