덧셈식 출력하기
문제
두 정수 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
lloWorldHe11oWor1dHe11oWor1d" - 결과값 = "He
lloWorldHe11oWor1dHe11oWor1dHe11oWor1d"
맨 앞에 있는 "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: 문자열 자르기 끝 인덱스

