-
[코딩 테스트] 프로그래머스 JS 연습 - 가위바위보, 인덱스 바꾸기, 모스부호(1), 영어가 싫어요, 7의 개수웹/JavaScript 2023. 1. 18. 17:53
1. 가위바위보
문제 설명
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
function solution(rsp) { var obj = { "0" : 5, "2" : 0, "5" : 2 } return rsp.split('').map(x => obj[x]).join('') }
객체는 obj[key] = value 라는 것을 이용해서 rsp를 split한 후 map 메소드를 이용하였다.
2. 인덱스 바꾸기
문제 설명
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
function solution(my_string, num1, num2) { var arr = my_string.split(''); [ arr[num1] , arr[num2] ] = [ arr[num2] , arr[num1]]; return arr.join(''); }
string은 인덱스로 문자를 바꿀 수 없으니 배열에 저장하여 디스트럭처링을 이용하였다.
3. 합성수 찾기
문제 설명
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(n) { var answer = 0; for (let i = 4; i <=n ; i++) { var sum = 0 for (let j = 2; j <i; j++) { if (i % j === 0) sum +=1 } answer += sum > 0 ? 1 : 0 } return answer; }
알고리즘으로 시간이 많이 걸린 문제였다. 하지만 for문에서 비효율적이다.
j <= Math.sqrt(i)로 바꾸는 것이 좋다.
4. 모스부호
문제 설명
머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
모스부호는 다음과 같습니다.function solution(letter) { const 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('') }
모스부호를 객체로 만든 후 obj[key] = value를 이용한다.
5. 영어가 싫어요
문제 설명
머쓱이
function solution(numbers) { var answer = numbers var str = { "zero" : 0, "one" : 1, "two" : 2, "three" :3, "four" : 4, "five" : 5, "six" : 6, "seven" : 7, "eight" : 8, "nine" : 9 } for (let s in str) { answer= answer.replaceAll(s,str[s]) } return answer * 1 }
for문을 str 객체의 키값으로 for문 돌린 후 전제 replace한다.
이때, 문자열로 나오므로 숫자형으로 전환이 필요하다.
+) 7의 개수
문제 설명
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.
function solution(array) { var answer = 0; for (let s of array) { answer+= s.toString().split('').filter(x => x === "7").length } return answer; }
위에는 직접 푼 코드이고,
function solution(array) { return array.join('').split('7').length-1; }
이것은 베스트 답안이다.
+) max
Math.max(a,b)
+) 정수확인
Number.isInteger(a)
+) 문자열 찾기
str.match(/[3|6|9]/g)
+) string
sort 제공 안함. arr에서 제공함
'웹 > JavaScript' 카테고리의 다른 글
[Javascript] 모던자바스크립트 딥 다이브 4일차 (~551p) (0) 2023.01.25 [Javascript] 모던자바스크립트 딥 다이브 3일차 (~416p) (0) 2023.01.23 [Javascript] 모던자바스크립트 딥 다이브 2일차 (~358p) (0) 2023.01.17 [Javascript] 모던자바스크립트 딥 다이브 1일차 (~199p) (0) 2023.01.16 [Javascript] 이벤트 - addEventListener, EventTarget, mouseenter, mouseleave, focus, blur, keyup, change 이벤트 (1) 2023.01.15