문제 설명 : 모스부호(1)
제한 사항
- 1 ≤ letter의 길이 ≤ 1,000
- return값은 소문자입니다.
- letter의 모스부호는 공백으로 나누어져 있습니다.
- letter에 공백은 연속으로 두 개 이상 존재하지 않습니다.
- 해독할 수 없는 편지는 주어지지 않습니다.
- 편지의 시작과 끝에는 공백이 없습니다.
입출력 예
letter | result |
".... . .-.. .-.. ---" | "hello" |
".--. -.-- - .... --- -." | "python" |
문제 풀이
letter 모스부호는 공백으로 나누어져 있으니까 split(' ') 공백 구분자로 문자열을 나눠주고
나눠준 문자열을 map으로 돌면서 morse의 키값에 넣어줘서 값을 받아온 뒤에 배열을 join으로 합쳐줬다.
function solution(letter) {
var answer = '';
let morse = {'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
return letter.split(' ').map(v=>morse[v]).join('')
}
문제 설명 : 2차원으로 만들기
제한 사항
- num_list의 길이는 n의 배 수개입니다.
- 0 ≤ num_list의 길이 ≤ 150
- 2 ≤ n < num_list의 길이
입출력 예
num_list | n | result |
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
[100, 95, 2, 4, 5, 6, 18, 33, 948] | 3 | [[100, 95, 2], [4, 5, 6], [18, 33, 948]] |
문제 풀이
for문으로 num_list의 길이를 돌면서 정수 n 크기만큼 slice로 잘라서 빈 배열에 넣어줬다.
slice(start, end) start부터 end전 원소까지 잘라서 배열을 복사해 오기 때문에 새로운 배열을 반환한다.
그래서 이중배열을 만들 수가 있다.
function solution(num_list,n) {
var answer = []
for(let i = 0; i < num_list.length; i+=n) {
answer.push(num_list.slice(i,i+n))
}
return answer;
}
문제 설명: 팩토리얼
i 팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미한다.
예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120이다.
정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 하는 solution함수???
- i! < n
제한 사항
- 0 < n ≤ 3,628,800
입출력 예
n | result |
3628800 | 10 |
7 | 3 |
문제 풀이
1부터 정수 n보다 커질 때까지 while문을 사용해서 곱해줬다.
마지막에 i-1을 한 이유는 곱해준 수가 n보다 작거나 같을 때도 한 번 더 곱해주기 때문에
하나를 빼 준 것이다.
function solution(n) {
let num = 1
let i = 1
while(num <= n) {
i++
num*=i
}
return i-1 ;
}
320x100
'Programmers' 카테고리의 다른 글
Programmers 문제 풀이 36 (0) | 2023.08.08 |
---|---|
Programmers 문제 풀이 35 (0) | 2023.08.06 |
Programmers 문제 풀이 33 (0) | 2023.07.31 |
Programmers 문제 풀이 32 (0) | 2023.07.28 |
Programmers 문제 풀이 31 (0) | 2023.07.27 |