본문 바로가기

Programming/9. BOJ15

[Node.js] 백준 1934번: 최소공배수 해설 먼저 테스트케이스 수는 따로 빼둔다. 이 문제는 최대공약수를 구하고 나서 그 값을 이용해 최대공배수를 구하면 된다. 두 수의 최대공약수를 구하는 법은 a를 b로 나눈 나머지가 r이라고 하면 GCD(a,b) - GCD(b,r) 이 되는데, 이 과정을 반복해서 r이 0이 되는 순간 나오는 b의 값이 바로 최대공약수이다. 최소공배수는 두 수 a와 b를 곱해준 뒤 최대공약수로 나누면 구해진다. 정답 const input = require("fs").readFileSync("/dev/stdin").toString().split("\n"); const ts = +input.shift(); let result = ""; function gcd(a,b) { while (b !== 0) { let r = a % b.. 2021. 7. 28.
[Node.js] 백준 1110번: 더하기 사이클 해설 우선 더한 값을 받아줄 sum 변수과 연산을 진행할 변수인 num, 그리고 answer를 만들어준다. while 루프로 값이 나올 떄까지 진행한다. 먼저 sum에는 아래 코드와 같이 10의 자리 수와 1의 자리 수를 구분해 더해준다. 그리고 num 변수에 num의 1의 자리 수를 10의 자리 수로 만들고 sum의 1의 자리 수를 합쳐준다. 이 과정을 반복하다가 num과 input이 같아지면 멈춘다. 정답 const input = Number(require("fs").readFileSync("/dev/stdin").toString()); let num = input; let sum; let answer = 0; while (true) { answer++; sum = Math.floor(num / 10.. 2021. 7. 28.
[Node.js] 백준 10952번: A+B -5 해설 우선 받아온 입력값을 개행문자를 기준으로 나눠준다. 그리고 while문 바깥에 변수 i를 만들어 for문과 같은 역할을 하도록 하고 변수 answer을 만들어 마지막에 한번에 출력되도록 한다. 여기서 출력을 while문에서 하지 않고 나중에 하는 이유는 console.log가 메모리를 꽤 잡아먹기 때문이다. (시간 초과 이슈) 그 다음 while문을 만들어 계산할 때마다 i값이 1씩 더해져서 input 개수만큼 돌아가도록 설정한 뒤 각 케이스를 불러와 공백으로 나눠진 값을 나눠 각각 a, b에 담는다. 그리고 조건에 입력의 마지막에 0 두 개가 들어온다는 것을 이용해 if문으로 0이 들어오지 않았을 때 개행문자를 포함한 합을 구해준다. 0이 두 개 들어온다면 그 즉시 while문을 끝내고 answe.. 2021. 7. 17.
백준 2438번 : 별 찍기 - 1 문제 : 입력한 수만큼 1개부터 하나씩 별이 추가되면서 출력하기 사용 언어 : Node JS 해설 : 빈 변수를 하나 생성해주고 for문을 돌려서 별이 하나씩 추가되고 출력되도록 설정한다. 정답 : const input = require('fs').readFileSync('/dev/stdin').toString(); let star = ""; for (let i = 0; i < input; i++) { star += "*"; console.log(star); } 2021. 7. 17.
백준 10950번:A+B - 3 문제 : 각 테스트 케이스마다 A+B를 출력한다. 사용 언어 : Node JS 해설 : input 값을 나눠준 뒤 for문 안에서 계산할 숫자들을 공백 기준으로 분리해주고 각각 숫자로 바꿔서 더해준다. 정답 : 2021. 7. 17.
백준 10951번:A+B -4 문제 : 각 테스트 케이스마다 A+B를 출력한다. 사용 언어 : Python 오답 사유 : try와 except의 사용법을 몰랐다. 해설 : try, except문은 오류나 예외 처리를 위한 구문이다. 사용법은 다음과 같다. try: 실행할 코드 except: 예외가 발생했을 때 처리하는 코드 이 문제에서는 전 문제처럼 오류가 없으면 계속 실행하도록 설정이 돼있다. 그러므로 예외 상황에서는 루프를 빠져나올 수 있도록 except문을 작성한다. 정답 : 2021. 7. 8.
백준 10952번: A+B -5 문제 : 각 테스트 케이스마다 A+B를 출력한다. 사용 언어 : Python 해설 : while문을 사용해야하는 문제다. 우선 무한 루프를 만들어준 뒤 A와 B를 계속 받아서 계산하도록 한다. 그리고 입력의 마지막에 0 두 개가 오면 무한루프에서 빠져나오도록 설정한다. 정답 : 2021. 7. 8.
백준 10871번: X보다 작은 수 문제 : X보다 작은 수면 공백으로 구분해 출력한다. 사용 언어 : Python 오답 사유 : 첫째로 리스트를 써야한다는 사실을 몰랐다. 여기부터 어떻게 풀어야할지 몰라 답안을 보게 됐다. 해설 : N,X는 평소처럼 각각 수를 받는다. A는 수를 받되 분리된 상태로 리스트에 담는다. 그리고 N번만큼 반복하는 for문을 통해 A의 i번째 수가 X보다 작으면 그 수를 출력한다. 그리고 조건처럼 공백으로 구분하기 위해 end=" " 를 넣는다. 정답 : 2021. 7. 8.
백준 2439번: 별찍기 - 2 문제 : 입력한 수 n만큼 별이 1개부터 n개가 생겨야하는데 오른쪽으로 정렬된 상태로 출력돼야 한다. 사용 언어 : Python 해설 : i는 1,2,3,4 이렇게 1씩 커진다. 이를 이용해 입력한 수에서 i를 뺀 값을 공백과 곱해주고 별에 i를 곱해 i값이 변할 때마다 공백은 줄어들고 별은 늘어나도록 설정한다. 정답 : 2021. 7. 7.
백준 11022번: A+B - 8 문제 : 각 테스트케이스마다 A와 B를 더한 값을 구한다. 사용 언어 : Python 해설 : 1부터 테스트 케이스만큼 반복하는 for문으로, f-string을 사용해 예제 출력과 동일하게 나오도록 작성했다. 정답 : 2021. 7. 7.
백준 15552번: 빠른 A+B 문제 : 각 테스트케이스마다 A와 B를 더한 값을 구한다. 사용 언어 : Python 해설 : 이번 문제에서는 input() 대신 sys.stdin.readline()을 사용하라고 나와있다. 그래서 문제의 조건에 맞게 테스트 케이스 개수와 A,B 값을 받아와 실행해주면 된다. 정답 : 2021. 7. 6.
백준 2884번 : 알람 시계 문제 : 입력한 시간보다 45분 앞당긴 시간을 출력해야 한다. 사용 언어 : Python 해설 : 우선 시(H) 와 분(M) 을 각각 정수로 받아온다. 그리고 1. M이 45보다 크다면 H 값은 그대로, M만 45를 뺀 결과값을 보여준다. 2. M이 45보다 작고 H가 0보다 크다면 H에서 1을 빼고 M에 15 ( 60 - 45) 를 더해준다. 3. H가 0보다 작다면 23으로 바꿔주고 2번과 동일하게 진행한다. 정답 : 2021. 7. 6.
반응형