문제 : https://www.acmicpc.net/problem/1110 (백준 온라인 저지)

성공한 코드

코드 설명하겟습니다.

 

let sum = null;
let cycle = 0;
let sumStr = N.toString();

 

입력받은 수와 비교할 새로운 수인 sum, 사이클 수, 자릿수 연산을 위해 사용할 sum의 문자열 변수를 선언합니다. 이 때 sum은 null로 초기화하였는데 이는 초기값과 입력값이 겹쳐 for문이 실행되지 않는 것을 방지하기 위해 null로 선언하였습니다. 만약 0으로 초기화한다면 입력값이 0일 때 for문이 수행되지 않습니다. 첫 for문에서 검사할 N의 자릿수를 계산하기 위해 sum 문자열 변수의 초기값은 N의 문자열 형태입니다.


for(;sum!=N;cycle++)

 

사이클로 만들어진 새로운 수가 입력받은 수와 같아질 때까지 반복합니다. 한 사이클이 끝날 때마다 사이클 값은 증가됩니다.

 

if(sumStr.length < 2){
    sumStr = "0".concat(sumStr);
}
        

sumStr 변수의 자릿수가 1이라면 앞에 0을 붙여 2자릿수로 만듭니다. 첫 사이클에는 N의 자릿수를 검사하며 그다음 사이클에는 새로 만들어진 숫자의 자릿수를 검사합니다.

 

let newSum = parseInt(sumStr[0])+parseInt(sumStr[1]);

 

sumStr 변수의 자릿수가 2라면 십의자리와 1의자리 숫자를 더해 정수 형태로 저장합니다.


if(newSum < 10){
    sumStr = sumStr[1].concat(newSum.toString());

 

만들어진 정수값의 자릿수가 1개라면 sumStr의 일의자리수와 만들어진 값을 연결하여 새로운 숫자 문자열을 만들어 sumStr 에 저장합니다.

 

}else{
sumStr = sumStr[1].concat(newSum.toString()[1]);
}

 

만들어진 정수값의 자릿수가 2개라면 sumStr의 일의자리수와 만들어진 값의 일의 자리수를 연결하여 새로운 숫자 문자열을 만들어 sumStr 에 저장합니다.


sum = parseInt(sumStr);

 

새로운 숫자를 만들었으면 입력받은 N값과 비교하기 위해 정수형태로 sum에 저장합니다.

console.log(cycle);

사이클로 만들어진 새로운 수가 입력받은 수와 동일해져서 for문을 탈출하면 cycle 횟수를 출력합니다.

 

이상으로 1110 문제 풀이를 마치겠습니다.

'Programing > Baekjoon 문제 알고리즘(node.js)' 카테고리의 다른 글

2577번 숫자의 개수  (0) 2022.02.25
11021번 A+B - 7  (0) 2022.02.25
10952번 A+B - 5  (0) 2022.02.25
2884번 알람 시계  (0) 2022.02.25
2588번 곱셈  (0) 2022.02.25
Posted by englishmath
,

출처 : https://www.acmicpc.net/problem/10952 (백준 온라인 저지)

성공한 코드

A+B와 동일하나 맨 마지막 요소 연산은 출력하지 않습니다. 코드를 살펴봅시다.   

 

for(let i in stdinline){

 

읽어들인 표준 입력 스트림 줄 수 만큼 반복합니다.


if(i == stdinline.length-1)
            break;

 

현재 처리할려는 줄이 표준 입력 스트림 마지막 줄인 경우 for문을 탈출합니다. 맨 마지막 줄은 연산 출력을 하지 않기 때문입니다.

 

let [A, B] = stdinline[i].split(" ").map(input => { return parseInt(input);});
console.log(A+B);

 

현재 처리할려는 줄이 마지막 줄이 아니라면 "A B" 형태의 인자를 공백 기준으로 나누고 정수로 변환하여 A과 B에 저장한 후 A+B를 출력합니다.

이상으로 10952번 문제 풀이를 마치겠습니다.

'Programing > Baekjoon 문제 알고리즘(node.js)' 카테고리의 다른 글

11021번 A+B - 7  (0) 2022.02.25
1110번 더하기 사이클  (0) 2022.02.25
2884번 알람 시계  (0) 2022.02.25
2588번 곱셈  (0) 2022.02.25
10871번 X보다 작은 수  (0) 2022.02.25
Posted by englishmath
,

출처 : https://www.acmicpc.net/problem/2884 (백준 온라인 저지)

성공한 코드

한 줄 입력이므로 기존에 사용했던 한줄 입력 코드를 사용했습니다. 코드를 살펴봅시다.

 

M = M-45;

 

45분 일찍 설정하는 것이 문제이므로 입력받은 M분에서 45를 뻅니다.
    
if(M >= 0){

 

45분을 뺀 값이 0 이상이라면 아무런 처리를 해 줄 필요가 없으니 코드를 생략합니다.

 

else if(H == 0){
        H = 23;
        M = 60+M
}

 

45분을 뺀 값이 음수라면 시간을 1 감소시킨 후 M값에 60분을 더해주어야 합니다. 단 이 때 시간이 자정을 나타내는 0이라면 1을 감소시킬 때 음수로 지정되므로 직접 23이라고 입력해줍니다.


else{
        H--;
        M = 60+M
}

 

45분을 뺀 값이 음수고 현재 시간이 자정이 아니라면 시간을 1 감소시킨 후 M값에 60분을 더해줍니다.

 

console.log(`${H} ${M}`);

 

시간을 한 줄로 출력하면 됩니다.

 

이상 2884번 문제 풀이를 마치겠습니다.

'Programing > Baekjoon 문제 알고리즘(node.js)' 카테고리의 다른 글

1110번 더하기 사이클  (0) 2022.02.25
10952번 A+B - 5  (0) 2022.02.25
2588번 곱셈  (0) 2022.02.25
10871번 X보다 작은 수  (0) 2022.02.25
10950번 A+B - 3  (0) 2022.02.25
Posted by englishmath
,