문제

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

 

 

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

 

출력

각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.

 

 

풀이

이전에 풀었던 A, B 관련 문제들의 확장된 느낌으로

단순한 계산에서 추가적 문자열까지 출력해야 하는 문제다.

 

기존 처리와 같이 split('\')을 통해 배열로 만든 다음

각각의 문자열은 for문 내부에서 구조분해할당으로 받아주고

계산 결과값을 문자열들을 통해 처리하던지

백틱 내부에서 처리하는 방식으로 진행할 수 있다.

 

문자열과 number type의 결합은 문자열로 처리되기 때문에

"Case #" + i + ": " +(a+b)의 방식으로 진행해도 되겠지만

뭔가 백틱이 더 읽기도 쉽고 편하다고 생각해 백틱을 사용했으며

마지막으로 테스트케이스의 제한이 보이지 않기 때문에 

자주 사용하던 result 배열에 담아 출력하는 방식을 사용했다.

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

const result = []

for(i = 1 ; i < input.length ; i++){
    const [a, b] = input[i].split(' ').map(Number)
    result.push(`Case #${i}: ${a+b}`)
}

console.log(result.join('\n'))
const input = `5
1 1
2 3
3 4
9 8
5 2`.split('\n')

const result = []

for(i = 1 ; i < input.length ; i++){
    const [a, b] = input[i].split(' ').map(Number)
    result.push(`Case #${i}: ${a+b}`)
}

console.log(result.join('\n'))

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

[백준 JS] 11382번 꼬마 정민  (0) 2023.03.08
[백준 JS] 11022번 A+B - 8  (0) 2023.03.08
[백준 JS] 10998번 AxB  (0) 2023.03.08
[백준 JS] 10952번 A+B - 5  (0) 2023.03.08
[백준 JS] 10951번 A+B - 4  (0) 2023.03.08

문제

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

 

 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

입력의 마지막에는 0 두 개가 들어온다.

 

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

 

풀이

A * B를 출력하면 되는 문제기 때문에

string type의 입력값('1 2'을 받아 split(' ')으로 분할해서 ['1', '2'] 형태로 변환한 다음

map(Number)를 사용해 number type으로 변경한 다음

구조분해 할당을 통해 a, b에 각각 할당하고

그 값의 곱을 출력해서 해결할 수 있다.

const [a,b] = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ')
console.log(a*b)
const [a,b] = `1 2`.split(' ')
console.log(a*b)

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

[백준 JS] 11022번 A+B - 8  (0) 2023.03.08
[백준 JS] 11021번 A+B - 7  (0) 2023.03.08
[백준 JS] 10952번 A+B - 5  (0) 2023.03.08
[백준 JS] 10951번 A+B - 4  (0) 2023.03.08
[백준 JS] 10950번 A+B - 3  (0) 2023.03.08

문제

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

 

 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

입력의 마지막에는 0 두 개가 들어온다.

 

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

 

풀이

다른 A,B 관련 문제들과 유사하지만

맨 마지막에 "0 0"으로 마무리된다는 부분이 차이가 있다.

굳이 "0 0"을 감지하려고 노력할 필요 없이 마지막줄을 무시하면 되기 때문에

for문의 조건을 i < input.length -1로 설정하면 마지막줄을 무시하고 진행할 수 있다.

 

그 외에는 기존과 동일하게 input값을 줄바꿈 기준으로 배열화 해서 받아준 다음

해당 문자열을 for문 내부에서 다시 배열 내부 숫자 타입으로 변경해 더해준 다음

각각의 결과값을 result에 추가해 join으로 출력 형식에 맞춰 출력하면 된다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
const result = []
for(let i = 0 ; i < input.length-1 ; i++){
    const [a,b] = input[i].split(' ').map(Number)
    result.push(a+b)
}

console.log(result.join('\n'))
const input = `1 1
2 3
3 4
9 8
5 2
0 0`.split('\n')
const result = []
for(let i = 0 ; i < input.length-1 ; i++){
    const [a,b] = input[i].split(' ').map(Number)
    result.push(a+b)
}

console.log(result.join('\n'))

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

[백준 JS] 11021번 A+B - 7  (0) 2023.03.08
[백준 JS] 10998번 AxB  (0) 2023.03.08
[백준 JS] 10951번 A+B - 4  (0) 2023.03.08
[백준 JS] 10950번 A+B - 3  (0) 2023.03.08
[백준 JS] 10926번 ??!  (0) 2023.03.07

문제

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

 

 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

 

풀이

이번에는 초반에 진행헀던 A,B 관련 문제들에서 한단계 더 나아가서

여러개의 테스트케이스를 처리해야 하는 문제로

input은 split('\')만 처리해서 추가적으로 가공해도 되고

.split('\').map(el => el.split(' ').map(Number))형태로 가공해도 된다.

 

조금 생소해 보일 수 있지만

이전에 map(Number)를 통해 배열 내부의 값들을 한번에 처리했던 것 처럼

각각의 한줄씩 쪼개진 문자열 '1 1' 형태를 ['1', '1']로 변경하고

다시 .map(Number)를 통해 [1, 1]로 변경하는 작업이라고 볼 수 있다.

 

같은 작업이지만 위에서 split('\') 까지만 처리했다면 for문 내부에서 진행할 경우 아래처럼 처리할 수도 있다.

for(let i = 0 ; i < input.length ; i++){

  const [a, b] = input[i].split(' ').map(Number)

}

 

초반에 너무 길게 가공하는 것이 보기 불편하다면

위에서 언급한 코드로 진행하는 것이 가독성면에서 더 좋을 수 있을 것 같기도 하다.

 

출력 또한 각각의 경우마다 출력해도 되겠지만

이전 문제들에서 종종 언급했던 것 처럼

뒤로 갈수록 출력 요구횟수가 늘어나기 때문에

result라는 배열을 선언해준 다음 그 안에 값들을 넣어두고 join을 통해 출력 형태로 가공하는 것이 좋다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(el => el.split(' ').map(Number))
const result = []
for(i = 0 ; i < input.length ; i++){
    const [a, b] = input[i]
    result.push(a+b)
}
console.log(result.join('\n'))
const input = `1 1
2 3
3 4
9 8
5 2`.split('\n').map(el => el.split(' ').map(Number))
const result = []
for(i = 0 ; i < input.length ; i++){
    const [a, b] = input[i]
    result.push(a+b)
}
console.log(result.join('\n'))

 

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

[백준 JS] 10998번 AxB  (0) 2023.03.08
[백준 JS] 10952번 A+B - 5  (0) 2023.03.08
[백준 JS] 10950번 A+B - 3  (0) 2023.03.08
[백준 JS] 10926번 ??!  (0) 2023.03.07
[백준 JS] 10872번 팩토리얼  (0) 2023.03.07

문제

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

 

 

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

 

풀이

A+B - 4에서 동일한 내용을 다루고 있긴 하지만
특이하게 여기에서는 테스트케이스의 갯수를 처음에 제공하고 있기 때문에
추가적인 가공이 필요하다.

이중배열등의 matrix관련 정보일 경우에는 조금 더 귀찮을 수 있지만

단순히 테스트케이스의 숫자인 경우에는 추가 가공을 하지 않고

바로 for문의 시작점을 i = 1로 지정해서 무시하고 넘어갈 수 있으며

A+B - 4에서 언급했던 for문 내부 가공방식을 사용해서 a, b 값을 받아올 수 있다.

또한 출력의 요구사항인 T의 갯수가 없기 때문에
많을 수 있다는 가정하에 result 배열에 담아 한번에 출력하자

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
const result = []
for(i = 1 ; i < input.length ; i++){
    const [a, b] = input[i].split(' ').map(Number)
    result.push(a+b)
}
console.log(result.join('\n'))
const input = `5
1 1
2 3
3 4
9 8
5 2`.split('\n')
const result = []
for(i = 1 ; i < input.length ; i++){
    const [a, b] = input[i].split(' ').map(Number)
    result.push(a+b)
}
console.log(result.join('\n'))

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

[백준 JS] 10952번 A+B - 5  (0) 2023.03.08
[백준 JS] 10951번 A+B - 4  (0) 2023.03.08
[백준 JS] 10926번 ??!  (0) 2023.03.07
[백준 JS] 10872번 팩토리얼  (0) 2023.03.07
[백준 JS] 10871번 X보다 작은 수  (0) 2023.03.07

문제

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.

 

 

출력

첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.

 

 

풀이

뒤에 ??!만 붙이면 되기 때문에

input값에 +"??!"를 해도 되고

백틱 내부에 ${id}??!로 처리를 해도 된다.

 

백틱은 변수나 계산식을 사용하기 위해서는 

백틱 내부에서 ${}의 중괄호 내부에 적어야 한다는 사실을 주의하자

const input = require('fs').readFileSync('/dev/stdin').toString().trim();
console.log(`${input}??!`)
const input = 'rgc0582'
console.log(`${input}??!`)

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

[백준 JS] 10951번 A+B - 4  (0) 2023.03.08
[백준 JS] 10950번 A+B - 3  (0) 2023.03.08
[백준 JS] 10872번 팩토리얼  (0) 2023.03.07
[백준 JS] 10871번 X보다 작은 수  (0) 2023.03.07
[백준 JS] 10869번 사칙연산  (0) 2023.03.07

문제

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

 

 

출력

첫째 줄에 N!을 출력한다.

 

 

풀이

입력값을 Number로 처리해 number type으로 받아준 다음

팩토리얼을 저장할 변수에 1을 초기값으로 할당해준 다음

for문을 통해 입력값(input)까지 1씩 증가하며 팩토리얼 변수를 계속 곱해준 다음

결과물을 출력한다.

 

for문은 1이 아닌 2로 시작해도 되지만

예전 코드를 수정하다가 i = 1로 제출해서 그대로 유지했다.

(가독성은 아주 조금 더 좋을지도..?)

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

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

[백준 JS] 10950번 A+B - 3  (0) 2023.03.08
[백준 JS] 10926번 ??!  (0) 2023.03.07
[백준 JS] 10871번 X보다 작은 수  (0) 2023.03.07
[백준 JS] 10869번 사칙연산  (0) 2023.03.07
[백준 JS] 10809번 알파벳 찾기  (0) 2023.03.07

문제

정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)

둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

 

 

출력

X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.

 

 

풀이

조건과 배열이 줄바꿈으로 들어있기 때문에 split('\n')으로 분할해준 다음

target을 구조분해 할당 또는 편한 방식으로 꺼내오고

처리해야할 문자열을 split('\').map(Number)로 숫자 배열화 한 다음

filter를 사용해 해당 조건(target보다 작은 숫자)만 통과시키고

통과된 결과물들을 join을 통해 출력 요구치대로 다듬어 제출했다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n")
const [amount, target] =input[0].split(' ').map(Number)
const nums =input[1].split(' ').map(Number).filter(el => el < target)
console.log(nums.join(' '))
const input = `10 5
1 10 4 9 2 3 8 5 7 6`.split("\n")
const [amount, target] =input[0].split(' ').map(Number)
const nums =input[1].split(' ').map(Number).filter(el => el < target)
console.log(nums.join(' '))

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

[백준 JS] 10926번 ??!  (0) 2023.03.07
[백준 JS] 10872번 팩토리얼  (0) 2023.03.07
[백준 JS] 10869번 사칙연산  (0) 2023.03.07
[백준 JS] 10809번 알파벳 찾기  (0) 2023.03.07
[백준 JS] 10757번 큰 수 A+B  (0) 2023.03.07

문제

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

 

 

입력

두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)

 

 

출력

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.

 

 

풀이

문자열의 형태로 한 줄에 주어지기 때문에 기존과 같이 split, map, 구조분해 할당으로 값을 가져온 다음

각각을 요구사항대로 a+b, a-b, a*b, a/b, a%b를 각각 출력했다.

 

다만 네 번째 값은 자기들 멋대로 몫을 구하라는 것이기 때문에

JS사용자로서 억울하지만 이건 몫을 구하라는 것이구나 하며 그냥 Math.floor()로 몫만 출력하면 된다.

const [a, b] = require('fs').readFileSync('/dev/stdin').toString().trim().split(" ").map(Number)

console.log(a+b)
console.log(a-b)
console.log(a*b)
console.log(Math.floor(a/b))    
console.log(a%b)
const [a, b] = '7 3'.split(" ").map(Number)

console.log(a+b)
console.log(a-b)
console.log(a*b)
console.log(Math.floor(a/b))    
console.log(a%b)

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

[백준 JS] 10872번 팩토리얼  (0) 2023.03.07
[백준 JS] 10871번 X보다 작은 수  (0) 2023.03.07
[백준 JS] 10809번 알파벳 찾기  (0) 2023.03.07
[백준 JS] 10757번 큰 수 A+B  (0) 2023.03.07
[백준 JS] 10718번 We love kriii  (0) 2023.03.07

문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

 

 

출력

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.

만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.

 

 

풀이

각 알파벳 순회를 위해 객체 또는 배열에 a~z까지의 문자열을 넣어서 접근할 수 있겠지만

아스키코드를 사용해 97~122번까지의 a~z를 indexOf()를 통해 input(입력값)에서 몇번째 인덱스인지를 조회했다.

 

사실 문제의 출력 요구사항 자체가 indexOf를 사용하라고 하는 것 같은 자연스러운 출력이기 때문에

각각의 indexOf의 결과를 result 배열에 push로 저장한 다음

한번에 join()을 통해 합쳐서 출력했다.

 

이전에도 언급했지만 여러개의 출력이 한번에 있을 때는

각각을 하나의 배열에 넣은 다음 join(' ') 또는 join('\n') 등으로 규칙에 맞게 합쳐 출력하는 것이 편리하다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim()
const result = []
for(let i = 97; i <=122; i++){
    result.push(input.indexOf(String.fromCharCode(i)))
}
console.log(result.join(' '))
const input = 'baekjoon'
const result = []
for(let i = 97; i <=122; i++){
    result.push(input.indexOf(String.fromCharCode(i)))
}
console.log(result.join(' '))

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

[백준 JS] 10871번 X보다 작은 수  (0) 2023.03.07
[백준 JS] 10869번 사칙연산  (0) 2023.03.07
[백준 JS] 10757번 큰 수 A+B  (0) 2023.03.07
[백준 JS] 10718번 We love kriii  (0) 2023.03.07
[백준 JS] 10699번 오늘 날짜  (0) 2023.03.07

문제

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

 

 

입력

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

 

 

출력

첫째 줄에 A+B를 출력한다.

 

 

풀이

A, B가 각각 10의 10000승까지의 범위기 때문에 당연히 BigInt를 써야 하는 문제다.

입력이 문자열로 들어오기 때문에 split으로 쪼갠 다음 map으로 BigInt로 변환한 다음

구조분해 할당으로 a, b에 각각 숫자를 넣어주고 

더한 값은 마지막에 n이 붙는 BigInt형식이기 때문에 String으로 감싸 문자열로 다시 변환해준다.

const [a, b] = require('fs').readFileSync('/dev/stdin').toString().trim().split(" ").map(BigInt)

console.log(String(a+b))
const [a, b] = '9223372036854775807 9223372036854775808'.split(" ").map(BigInt)

console.log(String(a+b))

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

[백준 JS] 10869번 사칙연산  (0) 2023.03.07
[백준 JS] 10809번 알파벳 찾기  (0) 2023.03.07
[백준 JS] 10718번 We love kriii  (0) 2023.03.07
[백준 JS] 10699번 오늘 날짜  (0) 2023.03.07
[백준 JS] 10430번 나머지  (1) 2023.03.07

문제

ACM-ICPC 인터넷 예선, Regional, 그리고 World Finals까지 이미 2회씩 진출해버린 kriii는 미련을 버리지 못하고 왠지 모르게 올해에도 파주 World Finals 준비 캠프에 참여했다.

대회를 뜰 줄 모르는 지박령 kriii를 위해서 격려의 문구를 출력해주자.

 

 

입력

본 문제는 입력이 없다.

 

 

출력

두 줄에 걸쳐 "강한친구 대한육군"을 한 줄에 한 번씩 출력한다.

 

 

풀이

강한친구 대한육군을 두 번 출력하면 되는 문제로 console을 두번 요청해서 해결할 수 있다.

console.log('강한친구 대한육군')
console.log('강한친구 대한육군')

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

[백준 JS] 10809번 알파벳 찾기  (0) 2023.03.07
[백준 JS] 10757번 큰 수 A+B  (0) 2023.03.07
[백준 JS] 10699번 오늘 날짜  (0) 2023.03.07
[백준 JS] 10430번 나머지  (1) 2023.03.07
[백준 JS] 10172번 개  (1) 2023.03.07

+ Recent posts