덧셈식 출력하기
문제
두 정수 a
, b
가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.
a + b = c
- 제한사항
- 1 ≤
a
,b
≤ 100
- 1 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ').map(Number);
}).on('close', function () {
console.log(`${input[0]} + ${input[1]} = ${input[0] + input[1]}`);
});
문자열 붙여서 출력하기
문제
두 개의 문자열 str1
, str2
가 공백으로 구분되어 입력으로 주어집니다.
입출력 예와 같이 str1
과 str2
을 이어서 출력하는 코드를 작성해 보세요.
- 제한사항
- 1 ≤
str1
,str2
의 길이 ≤ 10
- 1 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
console.log(`${input[0]}${input[1]}`);
});
문자열 돌리기
문제
문자열 str
이 주어집니다.
문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.
- 제한사항
- 1 ≤
str
의 길이 ≤ 10
- 1 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = [line];
}).on('close',function(){
str = input[0];
for (let i = 0; i < str.length; i++) console.log(str[i]);
});
홀짝 구분하기
문제
자연수 n
이 입력으로 주어졌을 때 만약 n
이 짝수이면 "n
is even"을, 홀수이면 "n
is odd"를 출력하는 코드를 작성해 보세요.
- 제한사항
- 1 ≤
n
≤ 1,000
- 1 ≤
소스 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = line.split(' ');
}).on('close', function () {
n = Number(input[0]);
console.log(`${n} is ${n % 2 === 0 ? 'even' : 'odd'}`);
});
문자열 겹쳐쓰기
문제
문자열 my_string
, overwrite_string
과 정수 s
가 주어집니다. 문자열 my_string
의 인덱스 s
부터 overwrite_string
의 길이만큼을 문자열 overwrite_string
으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
my_string
와overwrite_string
은 숫자와 알파벳으로 이루어져 있습니다.- 1 ≤
overwrite_string
의 길이 ≤my_string
의 길이 ≤ 1,000 - 0 ≤
s
≤my_string
의 길이 -overwrite_string
의 길이
소스 코드
const solution = (my_string, overwrite_string, s) => {
const str = [...my_string];
str.splice(s, overwrite_string.length, overwrite_string);
return str.join('');
};
my_string
의 문자들을 각각의 배열 요소로 만들어준 다음,splice()
함수를 사용하여s
부터s
+overwrite_string의 길이
에 해당하는 요소를overwrite_string
으로 바꿔주었다. 그리고join()
함수를 통해 str에 있는 요소들을 모두 문자열로 합쳐주었다.
splice()
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
:array
의start
부터의 요소를 삭제하거나 교체해준다,start
: 삭제 또는 변경을 시작할 인덱스deleteCount
: 배열에서 제거할 요소의 수items
: 배열에 추가할 요소, 없으면 삭제 진행
join()
array.join([separator])
:array
에 있는 요소들을 하나의 문자열로 합쳐준다.seperator
: 요소 별 구분자(default : ',')
오답 코드 & 다른 풀이 소스 코드
const solution = (my_string, overwrite_string, s) => {
let slice = my_string.slice(s, s + overwrite_string.length);
return my_string.replace(slice, overwrite_string);
};
- 다른 방식으로 문제를 풀던 중 위의 코드가 오답 처리가 되었다. 단순하게
replace()
하면 해당하는 하나만 변경해주기 때문에 이렇게 작성하면 될 거라 생각했는데,가장 앞에 있는 한 문자열
만 바꾸어주기 때문에, 중간에 있는 문자열을 바꾸고 싶은 경우,오답 처리
가 되는 것이었다.
my_string = "He11oWor1dHe11oWor1dHe11oWor1dHe11oWor1d"
overwrite_string = "lloWorl"
s = 12
- 기대값 = "He11oWor1dHe
lloWorl
dHe11oWor1dHe11oWor1d" - 결과값 = "He
lloWorl
dHe11oWor1dHe11oWor1dHe11oWor1d"
맨 앞에 있는 "11oWor1"을 수정해주기 때문에 오답!
const solution = (my_string, overwrite_string, s) => {
let first = my_string.substring(0, s);
let subStr = overwrite_string;
let last = my_string.substring(s + overwrite_string.length);
return first + subStr + last;
};
- 다른 풀이로는
substring()
을 이용하여 문제 풀이를 진행하였다.substr()
함수와 사용하는 방법이 같은데,substr()
함수가 deprecated 되면서 사용 방식이 같은substring()
을 이용해주었다.
substring()
substring(indexStart[, indexEnd])
:indexStart
부터 string의 일부를 자른 상태로 반환indexStart
: 문자열 자르기 시작 인덱스indexEnd
: 문자열 자르기 끝 인덱스
Ghost