Programmers

Programmers 문제 풀이 34

백단비 2023. 8. 2. 22:19

문제 설명 : 모스부호(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