문제

서울의 오늘 날짜를 출력하는 프로그램을 작성하시오.

 

 

입력

입력은 없다.

 

 

풀이

서울의 오늘 날짜를 "YYYY-MM-DD" 형식으로 출력해야 하는 문제인데

백준 사이트 출제자가 멍청한건지 기준을 UTC로 했다고 주장한다.(힌트)

 

하지만 실제 UTC기준이라면 9시간을 뺀 상태로 처리해야 하기 때문에

현재 날짜 -1이 맞는 정답인데 오답이 나서 홧김에 +1을 넣으니 정답 처리되었다.

3월 7일 7시 기준으로 utc를 검색해보면 3월 6일 22:00이 나오는데

제출한 코드로 출력되는 값은 3월 8일이다.

 

무슨 짓을 한건지는 잘 모르겠다.

 

어찌됐건 문제의 풀이를 보자면 new Date()를 통해 현재 날짜정보를 받아올 수 있고

거기에서 다시 getFullYear, getMonth, getDate를 통해 년, 월, 일을 받아올 수 있다.

하지만 변환 메서드가 조금 멍청해서 배열에 담긴 값에 매칭인건지 index취급으로 0부터 시작하기 때문에

3월의 경우 2가 출력되고 12월의 경우 11이 출력되는 등의 문제가 있기 때문에 +1을 해줘야 한다.

 

출력은 xxxx-xx-xx 형태기 때문에 1~9가 들어갈 경우 0을 붙여줘야 하기 때문에

자릿수를 자연스럽게 채워주는 padStart를 사용해 2자리가 되지 않는 경우 자동으로 뒤에 지정한 문자열이 앞에 추가되게 했다.

 

마무리로는 백틱으로 year, month, day를 변수로 가져올 수 있게 ${} 내부에 넣어주고 사이에는 "-"를 넣어 형식을 맞춰줬다.

const today = new Date()
const year = today.getFullYear()
const month = String(today.getMonth()+1).padStart(2,'0')
const day = String(today.getDate()).padStart(2,'0')

console.log(`${year}-${month}-${day}`)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 10757번 큰 수 A+B  (0) 2023.03.07
[백준 JS] 10718번 We love kriii  (0) 2023.03.07
[백준 JS] 10430번 나머지  (1) 2023.03.07
[백준 JS] 10172번 개  (1) 2023.03.07
[백준 JS] 10171번 고양이  (0) 2023.03.07

문제

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?

(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?

세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

 

 

풀이

주어진 입력 값 A, B, C를 받기 위해 문자열 "A B C"를 split(" ")으로 잘라준 다음 map(Number)로 숫자로 변경하고
변경된 배열은 구조분해 할당을 통해 [a, b, c]로 받아온다.

조건대로 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

const [a, b, c] = require('fs').readFileSync('/dev/stdin').toString().trim().split(" ").map(Number)
console.log((a+b)%c)
console.log(((a%c)+(b%c))%c)
console.log((a*b)%c)
console.log(((a%c)*(b%c))%c)
const [a, b, c] = '5 8 4'.split(" ").map(Number)
console.log((a+b)%c)
console.log(((a%c)+(b%c))%c)
console.log((a*b)%c)
console.log(((a%c)*(b%c))%c)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 10718번 We love kriii  (0) 2023.03.07
[백준 JS] 10699번 오늘 날짜  (0) 2023.03.07
[백준 JS] 10172번 개  (1) 2023.03.07
[백준 JS] 10171번 고양이  (0) 2023.03.07
[백준 JS] 9498번 시험성적  (0) 2023.03.07

문제

아래 예제와 같이 개를 출력하시오.

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

 

 

입력

없음.

 

 

풀이

고양이 문제와 유사한 문제지만 "\"는 "\\"로 표현해야 하는 것 외에

"`"는 "\`"로 표현해야 하는 것 또한 알아야만 풀 수 있는 문제였다.

 

에제로 주어진 문자열을 그대로 붙여넣기 한 다음

"\"와 "`" 앞에 "\"를 하나씩만 추가하면 해결할 수 있다.

console.log(`|\\_/|
|q p|   /}
( 0 )"""\\
|"^"\`    |
||_/=\\\\__|`)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 10699번 오늘 날짜  (0) 2023.03.07
[백준 JS] 10430번 나머지  (1) 2023.03.07
[백준 JS] 10171번 고양이  (0) 2023.03.07
[백준 JS] 9498번 시험성적  (0) 2023.03.07
[백준 JS] 8393번 합  (0) 2023.03.07

문제

아래 예제와 같이 고양이를 출력하시오.

\    /\
 )  ( ')
(  /  )
 \(__)|

 

 

입력

없음.

 

 

풀이

일반적 문자열과 유사하지만 "\"를 출력하기 위해서는 \\를 사용해야 한다.

예제의 출력을 그대로 복사한 다음 "\"표시가 있는 위치에만 "\"를 하나 더 추가시켜 주면 정상 출력되는 것을 볼 수 있다.

console.log(
`\\    /\\
 )  ( ')
(  /  )
 \\(__)|`)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 10430번 나머지  (1) 2023.03.07
[백준 JS] 10172번 개  (1) 2023.03.07
[백준 JS] 9498번 시험성적  (0) 2023.03.07
[백준 JS] 8393번 합  (0) 2023.03.07
[백준 JS] 7287번 등록  (0) 2023.03.06

문제

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

 

 

출력

입력된 시험 성적을 받기 위해 Number()로 감싸줬으며

해당 숫자를 조건문 if(), else if()를 통해 분기처리해 등급을 출력했다.

 

eles if의 진행 방식을 체로 거르는 것 처럼 해당 조건이 아닐 경우 넘어가는 절차기 때문에

90, 80, 70, 60의 주어진 조건에 따른 경계를 구분했는데

만약 65점인 경우 90점 미만으로 첫 번째 if문에서 내려가게 되고

두 번째 조건 체크에서도 80점 미만이기 때문에 하단의 else if로 내려가게 된다.

 

70점 미만으로 한번 더 내려간 다음 60점 이상의 조건에는 포함되기 때문에 'D'가 출력되곘지만

만약 59점인 경우 D 아래의 등급인 F가 출력되야 하기 때문에 else를 추가해 'F'로 변경을 하던지

최종적인 결과값의 경우 미리 할당해 두는 방식을 사용하던지 편한 방식대로 진행해도 된다.

const input = Number(require('fs').readFileSync('/dev/stdin').toString().trim())
let result = 'F'
    if(input >= 90){
        result = 'A'
    }
    else if(input >=80){
        result = 'B'
    }
    else if(input >=70){
        result = 'C'
    }
    else if(input >=60){
        result = 'D'
    }
console.log(result)
const input = Number('100')
let result = 'F'
    if(input >= 90){
        result = 'A'
    }
    else if(input >=80){
        result = 'B'
    }
    else if(input >=70){
        result = 'C'
    }
    else if(input >=60){
        result = 'D'
    }
console.log(result)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 10172번 개  (1) 2023.03.07
[백준 JS] 10171번 고양이  (0) 2023.03.07
[백준 JS] 8393번 합  (0) 2023.03.07
[백준 JS] 7287번 등록  (0) 2023.03.06
[백준 JS] 4999번 아!  (0) 2023.03.06

문제

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.

 

 

풀이

1부터 n까지의 합을 구하는 문제로 각각의 숫자가 필요했기 떄문에

for문의 1~n까지를 이용하는 편이 좋았다.

 

for문의 조건 중 i <= n을 통해 n까지 진행하게 만들고

각각의 연산이 끝난 sum을 출력했다.

const input = Number(require('fs').readFileSync('/dev/stdin').toString().trim())
let sum = 0
for(let i = 1 ; i <= input ; i++){
    sum += i
}
console.log(sum)
const input = Number('5')
let sum = 0
for(let i = 1 ; i <= input ; i++){
    sum += i
}
console.log(sum)

 

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 10171번 고양이  (0) 2023.03.07
[백준 JS] 9498번 시험성적  (0) 2023.03.07
[백준 JS] 7287번 등록  (0) 2023.03.06
[백준 JS] 4999번 아!  (0) 2023.03.06
[백준 JS] 2753번 윤년  (0) 2023.03.06

문제

자신이 백준 온라인 저지(BOJ)에서 맞은 문제의 수와 아이디를 그대로 출력하는 프로그램을 작성하시오.

 

 

입력

이 문제는 입력이 없다.

 

 

풀이

요구사항대로 첫 줄에는 맞힌 문제의 수를 출력하고 다음 줄에는 아이디를 출력하면 된다.

다만 본인이 맞힌 문제 숫자를 모를 수 있는데 우측 상단에 보이는 본인 아이디를 클릭할 경우

본인이 여태 맞춘 문제 숫자를 볼 수 있다.

console.log(416)
console.log('rgc0582')
console.log(본인이 맞춘 문제 숫자)
console.log('본인 아이디')

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 9498번 시험성적  (0) 2023.03.07
[백준 JS] 8393번 합  (0) 2023.03.07
[백준 JS] 4999번 아!  (0) 2023.03.06
[백준 JS] 2753번 윤년  (0) 2023.03.06
[백준 JS] 2741번 N 찍기  (0) 2023.03.06

문제

재환이는 저스틴 비버 콘서트에서 소리를 너무 많이 질러서 인후염에 걸렸다.

의사는 재환이에게 "aaah"를 말해보라고 시켰다. 안타깝게도 재환이는 의사가 원하는만큼 소리를 길게 낼 수 없는 경우가 있었다.

각각의 의사는 재환이에게 특정한 길이의 "aah"를 말해보라고 요청한다. 어떤 의사는 "aaaaaah"를 요구하기도 하고, "h"만 요구하는 의사도 있다.

모든 의사는 자신이 원하는 길이의 "aah"를 듣지 못하면 진단을 내릴 수 없다.

따라서, 재환이는 집에서 자신이 얼마나 길게 "aah"를 낼 수 있는지 알아냈고, 자기가 소리낼 수 있는 길이의 "aah"를 요구하는 의사를 방문하려고 한다.

재환이가 낼 수 있는 "aah"의 길이와 의사가 요구하는 길이가 주어진다. 이때, 그 병원에 가야하는지 말아야하는지를 알아내는 프로그램을 작성하시오.

 

 

입력

입력은 두 줄로 이루어져 있다. 첫째 줄은 재환이가 가장 길게 낼 수 있는 "aaah"이다. 둘째 줄은 의사가 듣기를 원하는 "aah"이다. 두 문자열은 모두 a와 h로만 이루어져 있다. a의 개수는 0보다 크거나 같고, 999보다 작거나 같으며, 항상 h는 마지막에 하나만 주어진다.

 

 

풀이

두 줄의 입력을 구조분해할당으로 받은 다음

조건은 h 하나로만 끝난다고 했기 때문에 앞은 모두 a로 통일되었다는 사실을 알 수 있고

결국 재환이가 더 긴 소리를 내거나 같은 경우 통과고 

의사가 요구하는 소리의 길이가 더 큰 경우 실패라는 것을 알 수 있다.

 

각 길이의 조건에 맞는 'no', 'go'를 출력해서 해결했다.

const [jahwan, doctor] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
if(jahwan.length < doctor.length){
    console.log('no')
}
else{
    console.log('go')
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 8393번 합  (0) 2023.03.07
[백준 JS] 7287번 등록  (0) 2023.03.06
[백준 JS] 2753번 윤년  (0) 2023.03.06
[백준 JS] 2741번 N 찍기  (0) 2023.03.06
[백준 JS] 2739번 구구단  (0) 2023.03.06

문제

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.

윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.

예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

 

 

입력

첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.

 

 

풀이

윤년의 기준이 정말로 이런지는 모르겠지만 문제의 요구조건대로 해결만 하면 통과하기 때문에

주어진 조건에 따른 확인을 통해 문제를 해결했다.

 

여러개의 조건이 중복될 경우 반드시 해당되는 상위조건부터 하위조건으로 내려가야 하는데

400의 배수일 경우는 윤년, 100의 배수일 때는 윤년 X

마지막으로 두 조건을 지나 4의 배수일 경우에도 윤년이기 때문에 

아래와 같이 각각 1, 0, 1을 할당해서 문제를 해결할 수 있다.

 

다만 result에 값을 부여하는 것은 취향이기 때문에

각각의 조건마다 console.log(1) 또는 console.log(0)을 해서 해결할 수도 있다.

 
const input = Number(require('fs').readFileSync('/dev/stdin').toString().trim())
let result = 0

if(input%400 === 0){
    result = 1
}
else if(input%100 === 0){
    result = 0
}
else if(input%4 === 0){
    result = 1
} 
console.log(result)
const input = Number('2000')
let result = 0

if(input%400 === 0){
    result = 1
}
else if(input%100 === 0){
    result = 0
}
else if(input%4 === 0){
    result = 1
} 
console.log(result)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 7287번 등록  (0) 2023.03.06
[백준 JS] 4999번 아!  (0) 2023.03.06
[백준 JS] 2741번 N 찍기  (0) 2023.03.06
[백준 JS] 2739번 구구단  (0) 2023.03.06
[백준 JS] 2558번 A+B - 2  (0) 2023.03.06

문제

자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.

 

 

풀이

입력값 N이 주어질 경우 1부터 N까지 각각 출력하는 문제라

이전에 사용했던 for문을 통해 간단히 해결할 수 있을 것 같지만

10만같은 큰 숫자를 각각 console.log를 사용하게 되면 출력처리 횟수가 지나치게 많아 문제가 생겨버린다.

 

이런 문제를 막기 위해 result 상수(배열)를 선언하고 그 내부에 각각의 값들을 push로 넣어준 다음

최종적으로 출력할 때 .join('\n')을 통해 각각의 값을 줄바꿈으로 합쳐 한번에 출력할 수 있다.

 

초반 이후의 문제들은 요구조건이 많을 경우 모았다 출력해야 하는 경우가 많다.

const input = Number(require('fs').readFileSync('/dev/stdin').toString().trim())
const result = []

for(let i = 1 ; i <= input ; i++){
    result.push(i)
}
console.log(result.join('\n'))
const input = Number('5')
const result = []

for(let i = 1 ; i <= input ; i++){
    result.push(i)
}
console.log(result.join('\n'))

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 4999번 아!  (0) 2023.03.06
[백준 JS] 2753번 윤년  (0) 2023.03.06
[백준 JS] 2739번 구구단  (0) 2023.03.06
[백준 JS] 2558번 A+B - 2  (0) 2023.03.06
[백준 JS] 2557번 Hello World  (0) 2023.03.06

문제

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

 

 

입력

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.

 

 

풀이

1~9 사이의 값이 주어질 경우 구구단의 각 단수를 출력하는 문제기 때문에

이번에도 for문을 통해 1~9까지의 반복을 진행하는 방식으로 접근해야 하며

''이 아닌 ``(백틱)으로 감싸 문자열로 처리되는 방식으로 처리했다.

 

문자열이 아닌 변수 또는 식이 들어갈 경우 백틱 내부에서 ${}를 사용해줘야 한다.

const input = Number(require('fs').readFileSync('/dev/stdin').toString().trim())

for(let i = 1; i <=9 ; i++){
    console.log( `${input} * ${i} = ${input*i}`)
}
const input = Number('3')

for(let i = 1; i <=9 ; i++){
    console.log( `${input} * ${i} = ${input*i}`)
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 2753번 윤년  (0) 2023.03.06
[백준 JS] 2741번 N 찍기  (0) 2023.03.06
[백준 JS] 2558번 A+B - 2  (0) 2023.03.06
[백준 JS] 2557번 Hello World  (0) 2023.03.06
[백준 JS] 2475번 검증수  (0) 2023.03.06

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10)

 

 

풀이

이전과는 다르게 a,b의 입력이 줄바꿈으로 되어있기 때문에 '\n' 기호를 통해 줄바꿈을 진행해야 한다.

str.split('\n')를 사용할 경우 줄바꿈을 기준으로 배열로 쪼개주기 때문에

"1

2"와 같은 입력이 들어올 경우 ["1", "2"]로 쪼개주고

이 배열을 다시 .map(Number)로 숫자로 변경시켜주면 [1,2]로 변경된다.

 

이렇게 구해진 input[0], input[1] 값을 더해서 출력하면 된다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number)

console.log(input[0]+input[1])
const input = '1
2'.split('\n').map(Number)

console.log(input[0]+input[1])

'알고리즘 > 백준' 카테고리의 다른 글

[백준 JS] 2741번 N 찍기  (0) 2023.03.06
[백준 JS] 2739번 구구단  (0) 2023.03.06
[백준 JS] 2557번 Hello World  (0) 2023.03.06
[백준 JS] 2475번 검증수  (0) 2023.03.06
[백준 JS] 2438번 별 찍기 - 1  (0) 2023.03.06

+ Recent posts