지인 일을 도와주다가 지금은 한가해져서 이렇게 노트북을 열었다.
얼른얼른 끝내야지 ㅎㅎ
오늘은 조건문 마지막이다!!
오늘의 조건문 마지막 이야기는~~~~
문제 2525번
https://www.acmicpc.net/problem/2525
2525번: 오븐 시계
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
www.acmicpc.net
이 문제는 시와 분을 공백을 기준으로 입력받고, 다음줄에 요리하는 데 필요한 시간을 입력받도록 되어있었다.
그래서 어떻게 받아야할지 고민하다가 먼저 줄을 기준으로 입력받은 후 첫번째를 공백을 기준으로 나눠준 것을 보았다.
음... 이 방법을 사용하여 입력을 받으면 될 것 같다.
...
다 작성하고 테스트를 해봤는데 TypeError가 났다. 그래서 보니까 내가 입력을 받을 때 map을 이용하여 Number로 바꿔놓고 또 split을 이용하여 공백을 기준으로 나눴기 때문인 것 같다(자바스크립트가 문자열을 나눠서 받는건데 Number 타입으로 바꿔서 그런 것 같다).
그래서 map을 지워주니 결과가 제대로 잘 나온다 ㅎㅎ.
... 틀렸네?
다시 한 번 확인해보니 시가 23에서 0으로 넘어갈 때 조건을 처리해주지 않았다 ㅎㅎ(실수...).
수정하자...
const fs = require('fs');
//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';
//테스트
//const readFileSyncAdress = 'input.txt';
const input = fs.readFileSync(readFileSyncAdress).toString().split('\n');
let A = parseInt(input[0].split(' ')[0]);
let B = parseInt(input[0].split(' ')[1]);
let C = parseInt(input[1]);
B+=C;
if(B>59){
let num = Math.floor(B/60);
B = Math.floor(B%60);
A+=num;
if(A>23){
A-=24;
}
}
console.log(A+' '+B);
휴... 23에서 0으로 넘어가도록 할 때 num을 더해줬으니까 24를 빼줬어야했는데 23을 빼줘서 어디가 틀렸는지 계속 찾았다 ㅎㅎ.
그래도 성공~~~~!
문제 2480번
https://www.acmicpc.net/problem/2480
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개만
www.acmicpc.net
주사위... 갑자기 보드게임 카페에서 주사위 게임한거 생각난다(그거 하면서 든 생각은 도박은 위험하다).
음... 입력받을 때 A,B,C해서 받으려고 했는데 나중에 가장 큰 수를 찾기 위해 input으로 받아줘야될 것 같다.
가장 큰 수를 찾는 함수인 max가 있을지 찾아보니까 있었다!!
Math.max()를 사용해서 배열 원소 중 가장 큰 숫자를 선택하면 된다 ㅎㅎ.
const fs = require('fs');
//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';
//테스트
//const readFileSyncAdress = 'input.txt';
let reward;
const input = fs.readFileSync(readFileSyncAdress).toString().split(' ').map(Number);
let A = input[0];
let B = input[1];
let C = input[2];
if(A===B&&B===C){
reward = 10000+A*1000;
}else if(A===B||B===C||A===C){
if(A==B||A==C){
reward = 1000+A*100;
} else{
reward = 1000+B*100;
}
}else{
let Max = Math.max(...input); //...를 안 붙이니까 예제 3에서 NaN가 나옴
reward = Max*100;
}
console.log(reward);
예제 3에서 NaN가 나왔길래 '...'을 배열 앞에 붙였더니 잘 나왔다.
배열을 입력해줄 때는 spread 연산자인 '...'을 꼭 사용해야한다고 한다.
펼치다, 퍼뜨리다 라는 뜻을 가진 spread는 객체 혹은 배열을 펼칠 수 있다고 한다.
기존의 것을 건들이지 않고, 새로운 객체를 만들어야 하는 상황에서 사용할 수 있는 유용한 분법이 바로 이 spread 이다.
그렇구나 ㅎㅎ.
난 왜 '...'가 붙어있나 했다.
오늘도 하나 배웠군 ㅎㅎ
오늘은 낮에 끝내서 좋구만
역시 할 일은 미리미리 해놓는 것이 좋다.
드디어 다음 단계로 넘어간다~~
그럼 내일 만나욥!
[참고]
https://spookyjelly.tistory.com/52
https://ggcoding.tistory.com/66
https://velog.io/@rkio/%EB%B0%B1%EC%A4%80-Javascript-2480
https://learnjs.vlpt.us/useful/07-spread-and-rest.html
'백준 > JavaScript' 카테고리의 다른 글
[JS] 백준 반복문 - 두 번째 이야기 (1) | 2024.01.08 |
---|---|
[JS] 백준 반복문 - 첫 번째 이야기 (2) | 2024.01.07 |
[JS] 백준 조건문 - 두 번째 이야기 (2) | 2024.01.05 |
[JS] 백준 조건문 - 첫 번째 이야기 (4) | 2024.01.04 |
[JS] 백준 입출력과 사칙연산 - 마지막 이야기 (4) | 2024.01.04 |