개발 이모저모/프로그래머스 알고리즘
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(7)
creativeDeveloper!
2023. 4. 4. 00:15
728x90
■ 순서쌍의 개수
- answer를 빈배열로 초기화 한다.
- 입출력 예시를 통해, n의 약수의 갯수가 result와 같다는것을 알 수 있다.
- 반복문 i를 1부터 n까지 증가시킬때, n이 i의 약수라면 그 값을 answer에 넣는다.
- answer의 길이를 return해 준다.
■ 가위 바위 보
- 이 문제의 조건을 정리해보면, result에는 rsp와 길이가 같은 문자열을 return => rsp.length 를 사용
- 입출력 예시를 통해 rsp="205" 일때, rsp[0] = "2",rsp[1] = "0",rsp[2] = "5" 인데,
- result에는 result[0] = "0", result[1] = "5",result[2] = "2" 이다.
- 같은 위치의 인덱스 배열에서 특정 문자열을 바꾸고 있다.
- mdn으로 string과 관련된 함수를 찾아보았다. => String.charAt() 함수를 이용할 수 있다.
- 이제 앞에서 해온 순서대로 result를 빈문자열로 초기화한다.
- 그 후에 반복문을 사용해서 rsp.length만큼 돌려준다.
- String.charAt() 을 사용해서 rsp[i]가 2일때, 0일때,5일때로 나눌 수 있다.
- ch가 2일때, 0일때, 5일때, 이렇게 세가지로 대체하는 문자열이 다르기때문에 => if-else문 사용
- replaceAll을 사용해서 해당하는 모든 문자열(모든 0들에 대해,2들에 대해,5들에 대해)들을 대체해줄수 있다.
■ 구슬을 나누는 경우의 수
- 이 문제는 재귀함수를 알아야 접근 할 수 있는 문제이다.
- 재귀함수란 함수에서 자기 자신을 다시 호출해 작업을 수행하는 방식이다.
- 그래서 특정 분기까지 자기 자신을 계속해서 호출하는데, 주로 반복문을 구현할때 사용한다.
- combination 함수는 n개중에 r개를 나눠주는 것에 관한 함수이다.
- 세가지 경우의 수로 나눌 수 있는데, r의갯수가 n의 갯수보다 클때 이때는 0을 반환한다.
- 당연히 share의 갯수가 크면 0을 반환할 수 밖에 없다.
- 두번째 경우의 수는 r이 0이거나 n의 갯수와 같을 때로 나눌 수 있다.
- 이 경우에는 1을 반환한다.
- 그리고 재귀함수를 사용해서 r개의 구슬을 뽑는 경우와 r개의 구슬을 뽑지않는 경우의 수를 합해서 반환해준다.
- 최종적으로 combination 함수에 balls,share를 매개변수로 담아서 return해준다.
■ 모스부호(1)
- 매개변수 letter를 영어 소문자로 바꾼 문자열을 result변수에 담아서 반환해주는 문제이다.
- 주어진 모스부호를 가져온다.
- 문자열 letter를 단어로 분리해서 words에 담아준다.
- 결과값 result 변수를 공백없는 빈문자열로 초기화해준다.
- words의 길이만큼 반복문을 돌려서 word 변수에 담아준다.
- 이제 codes라는 변수를 선언했는데 codes 변수는 word(단어)를 문자로 쪼갠것이다.
- 이것도 똑같이 codes의 길이만큼 반복문을 돌려준다.
- 그래서 code변수에 codes[0],codes[1]..을 담아 준다.
- morse 변수에 문자로 담긴 code 배열들을 담아서 result 변수에 넣어준다.
- 마지막에 trim 함수를 이용해서 공백을 제거해준뒤 return 해준다.
728x90