해당 문제는 입력된 문자를 split으로 공백을 기준으로 쪼개어 배열에 각각 저장한 후 그 길이만큼 for문을 돌리고, 다시 for문을 morse 객체의 길이만큼 돌리면서 배열 하나 하나의 값이 객체 하나 하나의 키의 이름과 같을 때 그 값을 result에 누적 연산 시켜준 뒤 for문이 다 끝나면 해당 result문을 반환해 주는 로직으로 해결했는데요.
객체를 이용하다보니 for문 뿐만 아니라 객체의 객체의 키에 접근하는 방법을 사용해야 하는 번거로움이 있다만, for-in 루프를 이용하면 그것도 어렵지는 않아서 무리 없이 해냈습니다.
- 자바스크립트 버전
function solution(letter) { 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' } let words = letter.split(" "); let result = ""; for(let i = 0 ; i < words.length ; i++){ for(let key in morse){ if(words[i] === key){ result += morse[key]; } } } return result; }
그런데 문제는 자바 버전이라.... (자바는 HashMap을 이용해야 해서 좀 복잡합니다.) 아직 자바 버전은 배우는 중이라 아마 조만간 코드를 추가할 것 같습니다. (두 언어를 공부하다보니 자바가 이렇게 엄격한 언어일줄은...) 😂
- 자바 버전 (추가 예정)
(추가 예정)