알고리즘
-
[백준] 9506번 약수들의 합(javascript)알고리즘 2023. 3. 21. 02:13
// 9506 : 약수들의 합 const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); let arrNums = new Array(); let answer = ''; for (let i = 0; i < input.length; i++) { if (input[i] == '-1') { break; } for (let j = 1; j a + b); if (numSum == input[i]) { answer += input[i] + ' = ' + arrNums.join(' + '); } else { answer += input[i] + ' is NOT perfect.'; } arrNums = []; conso..
-
[백준] 2750번 수 정렬하기(javascript)알고리즘 2023. 3. 21. 02:13
https://www.acmicpc.net/problem/2750 // 2750 : 수 정렬하기 let input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); // 숫자의 개수 제거 input.shift(); // 숫자 오름 차순 정렬 input.sort((a, b) => a - b); for (let i = 0; i < input.length; i++) { console.log(input[i]); } Uploaded by Notion2Tistory v1.1.0
-
[백준] 1929번 소수 구하기 (javascript)알고리즘 2023. 3. 20. 23:34
https://www.acmicpc.net/problem/1929 에라스토텔레스의 체를 이용해서 구했다. 처음에 백준 채점에서 틀렸다고 떠서 다시 봤더니 소수인지 아닌지 체크하는 prime 배열의 0번째와 1번째를 false로 바꿔주지 않아서였다. 코드를 추가하니 정답 처리 되었다. const [m, n] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split(' ') .map(Number); let prime = []; for (let i = 0; i
-
[백준] 2609번 최대공약수와 최소공배수알고리즘 2023. 3. 13. 23:01
유클리드 호제법1. 먼저 두개의 수를 서로 나눈 나머지를 구한다. ex) 1071 % 1029 = 422. 두 수 중 작은 수를 다시 나머지로 나눈다. ex) 1029 % 42 = 213. 나누어 떨어질때까지 반복한다.4. 나누어떨어지면 나눈 수가 최대공약수가 된다. ex) 42 % 21 = 0 최대공약수는 21 최소공배수 = A X B / 최대공약수 const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split(' '); let a = input[0]; let b = input[1]; while (a % b !== 0) { let n = a % b; if (n !== 0) { a = b; b = n; } } conso..
-
[백준] 1152번 단어의 개수알고리즘 2023. 2. 10. 00:19
https://www.acmicpc.net/problem/1152 처음 생각했던 답sentence = list(input().split()) print(len(sentence))→ 이 풀이도 틀린 답은 아니지만 더 간단하게 풀 수 있는 방법이 있었다. split함수는 문자열을 공백기준으로 나누어 리스트로 반환해주기 때문에 list로 굳이 바꾸지 않아도 된다. 반환되는 타입을 생각해보지 않았는데, 이번에 알게되어서 절대 잊지 않을 것 같다.더 간단한 답sentence = input().split() print(len(sentence)) Uploaded by Notion2Tistory v1.1.0
-
[백준] 1110 더하기 사이클알고리즘 2023. 2. 10. 00:19
https://www.acmicpc.net/problem/1110 처음에는 단순하게 문자열로 처리해서 숫자끼리 더하고 원래 숫자와 비교하려고 했는데, 시간초과가 발생했다. 시간초과 발생한 풀이n = input() num = n count = 0 while True: if len(num) == 1: num = '0' + num count += 1 new_n = str(int(num[0]) + int(num[1])) num = num[-1] + new_n[-1] if num == n: print(count) break 처음부터 int형으로 받고 10으로 나눠서 나머지끼리 더하면 괜찮을 것 같아서 시도해보았다.n = int(input()) num = n count = 0 while True: count += ..