문자열 뒤집기
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
- 1 ≤ my_string의 길이 ≤ 1,000
function solution(my_string) {
let answer = '';
let i = my_string.length - 1;
while(i >= 0) {
answer += my_string[i];
i--;
}
return answer;
}
// 다른 사람의 풀이
function solution(my_string) {
var answer = [...my_string].reverse().join("");
return answer;
}
function solution(my_string) {
return my_string.split("").reverse().join("");
}
문자열은 '유사 배열'에 속하기 때문에, 배열 뒤집기 문제와 같은 방법으로 접근하면 된다.
1) 문자열 답을 받아줄 변수 answer = '';를 선언한다.
2) 객체처럼 반복문을 통해 요소에 접근하고, 그 값을 answer에 더한다. 그러면 원하는 결과가 나온다.
<다른 사람의 풀이에 대한 이해>
1) 스프레드 문법을 사용하면, my_string의 글자(요소)가 각 요소로 해체된다.
2) reverse()를 사용하여 배열의 순서를 뒤집는다.
3) join('')을 사용하여 배열의 요소를 공백이 없는 문자열로 변환한다.
splite('') : 문자열의 요소 각각을 배열로 바꾼다.
--> 이는 [...my_string]과 같다.
직각삼각형 출력하기
"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.
- 1 ≤ n ≤ 10
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 () {
const n = (Number(input[0]));
let i = 1;
while(i <= n) {
let star = '';
let repeat = 0;
while(repeat < i) {
star = star + '*';
repeat++;
}
console.log(star);
i++;
}
});
// 다른 사람의 풀이
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 () {
solution(Number(input[0]));
});
function solution(n) {
for(let i = 1; i < n + 1; i++) {
console.log('*'.repeat(i));
}
}
아직 이해가 되지 않는다. 복습하는 것으로 킵! 2024-04-06
<다른 사람의 풀이>
제일 깔끔한 코드 같다.
짝수 홀수 개수
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
- 1 ≤ num_list의 길이 ≤ 100
- 0 ≤ num_list의 원소 ≤ 1,000
function solution(num_list) {
let answer = [];
let even = 0;
let odd = 0;
let i = 0;
while(i < num_list.length) {
(num_list[i] % 2 === 0) ? even++ : odd++;
i++;
}
answer[0] = even;
answer[1] = odd;
return answer;
}
// 다른 사람의 풀이
function solution(num_list) {
var answer = [0,0];
for(let a of num_list){
answer[a%2] += 1
}
return answer;
}
function solution(num_list) {
return [
num_list.filter((num) => num % 2 === 0).length,
num_list.filter((num) => num % 2 === 1).length,
];
}
1) 배열의 요소를 반복하면서, 그 값이 2의 배수이면 even++, 홀수이면 odd++를 삼항연산자로 작성
2) answer이라는 빈 배열의 0번 인덱스 자리에 even, 1번 인덱스 자리에 odd를 넣는다.
<다른 사람의 풀이에 대한 이해>
for ... of 반복문을 사용하여 answer[a % 2]에 따라 answer [0, 0]의 요소의 값이 더해지도록 작성
천잰데?
for ... of는 'o'에서 object를 순회하는 반복문이라고 외우자!
filter()을 사용하여 리턴문을 배열 형태로 만들어 해당 인덱스 자리에 표현식을 작성한다.
표현식은 자바스크립트에게 질문을 던지는 것과 같아서, 바로 값을 얻을 수 있다.
문자 반복 출력하기
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
- 2 ≤ my_string 길이 ≤ 5
- 2 ≤ n ≤ 10
- "my_string"은 영어 대소문자로 이루어져 있습니다.
function solution(my_string, n) {
let answer = '';
let i = 0;
while(i < my_string.length) {
const repeatCharactor = my_string[i];
let repeatCnt = 0;
while(repeatCnt < n) {
answer += repeatCharactor;
repeatCnt++;
}
i++
}
return answer;
}
// 다른 사람의 풀이
function solution(my_string, n) {
var answer = [...my_string].map(v => v.repeat(n)).join("");
console.log(answer);
return answer;
}
function solution(my_string, n) {
return my_string.split('').reduce((acc, cur) => acc + cur.repeat(n), '')
}
function solution(my_string, n) {
let ans = '';
for (let s of my_string) ans+=s.repeat(n);
return ans;
}
function solution(my_string, n) {
return my_string.split("").map((v)=> v.repeat(n)).join('')
}
<다른 사람의 풀이에 대한 이해>
1) 스프레드 문법을 사용하여 문자열의 각 요소를 해체한 채 배열에 넣는다.
2) 배열이 됐으므로, map()을 사용하여 배열을 조작한다.
3) join('')을 사용하여 문자열로 변환한다.
1) split('')을 사용하면 문자열을 배열로 변환할 수 있다.
2) reduce()를 사용하여 계산한다. / 아직 해설을 못 다는 단계. 다시 달자. 2024-04-06
1) for...of 반복문을 돌면 결국 해당 문자가 나온다.
2) 이를 repeat()을 사용하여 이어 붙인다.
1) split('')를 사용하여 문자열을 배열로 변환한다.
2) map()을 사용하여 배열을 조작한다.
3) 조작한 배열에 join('')을 사용하여 문자열로 변환한다.
--> map()을 사용하기 위한 변환이었다.
참고 영상
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 - Day8 배열, 구현, 수학 (0) | 2024.03.17 |
---|---|
프로그래머스 0단계 - Day7 문자열, 조건문, 수학, 반복문 (0) | 2024.03.17 |
프로그래머스 0단계 - Day5 수학, 배열 (0) | 2024.03.15 |
프로그래머스 0단계 - Day4 수학, 배열 (0) | 2024.03.14 |
프로그래머스 0단계 - Day3 사칙연산, 조건문, 배열 (0) | 2024.03.13 |
댓글