문제 설명 : 인덱스 바꾸기
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때,
my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하는 solution 함수??
제한사항
- 1 < my_string의 길이 < 100
- 0 ≤ num1, num2 < my_string의 길이
- my_string은 소문자로 이루어져 있다.
- num1 ≠ num2
입출력예
my_string | num1 | num2 | result |
"hello" | 1 | 2 | "hlelo" |
"I love you" | 3 | 6 | "I l veoyou" |
문제 풀이
접근1) 새로운 문자열에 하나씩 더해주다가 num1의 인덱스가 나오면 num2의 값을 넣어주고,
num2의 인덱스가 나오면 num1의 값을 넣어줬다.
function solution(my_string, num1, num2) {
var answer = '';
for(let i = 0; i < my_string.length; i++) {
if(i === num1) {
answer+=my_string[num2]
} else if ( i === num2) {
answer+=my_string[num1]
} else {
answer+=my_string[i]}
}
return answer;
}
접근 2) 구조 분해 할당을 이용하면 간단히 해결이 된다.
function solution(my_string, num1, num2) {
let arr = my_string.split("");
[arr[num1], arr[num2]] = [arr[num2], arr[num1]];
return arr.join("");
}
문제 설명 : 영어가 싫어요
영어로 표기되어 있는 숫자를 수로 바꾸려고 한다.
문자열 numbers가 매개변수로 주어질 때,
numbers를 정수로 바꿔 return 하는 solution 함수???
제한사항
- numbers는 소문자로만 구성되어 있다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없다.
입출력예
numbers | result |
"onetwothreefourfivesixseveneightnine" | 123456789 |
"onefourzerosixseven" | 14067 |
문제 풀이
접근 1) replaceAll로 다 바꿔준다. (마지막에 *1은 Number형식으로 바꿔주기 위함이다.)
function solution (numbers) {
var answer = 0;
let str = numbers
str = str.replaceAll('zero','0')
str = str.replaceAll('one','1')
str = str.replaceAll('two','2')
str = str.replaceAll('three','3')
str = str.replaceAll('four','4')
str = str.replaceAll('five','5')
str = str.replaceAll('six','6')
str = str.replaceAll('seven','7')
str = str.replaceAll('eight','8')
str = str.replaceAll('nine','9')
return answer=str *1
}
접근 2) number = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] 배열을 만들어준 후
이것들을 이용해서 split과 join을 반복해 준다.
function solution(numbers) {
const number = ["zero","one","two","three", "four", "five", "six", "seven", "eight", "nine"]
for(let i = 0 ; i<number.length; i++){
numbers = numbers.split(number[i]).join(i)
}
return numbers *1
}
문제 설명 : 암호 해독
전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈다.
- 암호화된 문자열 cipher를 주고받는다.
- 그 문자열에서 code의 배수 번째 글자만 진짜 암호이다.
문자열 cipher와 정수 code가 매개변수로 주어질 때
해독된 암호 문자열을 return 하는 solution 함수???
제한사항
- 1 ≤ cipher의 길이 ≤ 1,000
- 1 ≤ code ≤ cipher의 길이
- cipher는 소문자와 공백으로만 구성되어 있다.
- 공백도 하나의 문자로 취급한다.
입출력예
cipher | code | result |
"dfjardstddetckdaccccdegk" | 4 | "attack" |
"pfqallllabwaoclk" | 2 | "fallback" |
문제 풀이
code의 배수 번째 글자만 진짜 암호이므로 index + 1을 code로 나눴을 때 나머지가 0 인 것들만 반환해 줬다.
(이때 index+1을 한 이유는 index는 0부터 시작하기 때문이다.)
function solution(cipher, code) {
var answer = '';
for(let i = 0 ; i<cipher.length; i++)
if((i+1)%code === 0){
answer+=cipher[i]
}
return answer;
}
'Programmers' 카테고리의 다른 글
Programmers 문제 풀이 30 (0) | 2023.06.28 |
---|---|
Programmers 문제 풀이 29 (0) | 2023.06.27 |
Programmers 문제 풀이 27 (0) | 2023.06.23 |
Programmers 문제 풀이 26 (0) | 2023.06.22 |
Programmers 문제 풀이 25 (0) | 2023.06.21 |