Today I Learend
- Programmers 문제 풀기
- 기술면접 답변 정리
Programmers 문제 풀기
진료순서 정하기
나의 풀이
function solution(emergency) {
let array = [...emergency].sort((a,b) => b - a)
return emergency.map((v) => array.indexOf(v) + 1);
}
sort 메서드를 이용해서 emergency를 내림차순으로 (응급 순서가 높은 순으로) 정렬한 배열을 만든다. 그리고 기존 emergency 배열에 map을 돌리는데 이때 내림차순으로 정렬한 배열 array에서 해당 요소를 찾아 index+1을 출력한다. 다른 사람들 풀이 보니 다들 비슷하게 푼 거 같다!
한 번만 등장한 문자
나의 풀이
function solution(s) {
let array = [...new Set(s.split("").sort())];
let answer = "";
for ( i = 0; i <= array.length - 1; i++ ) {
let array2 = s.split("").filter((v) => v === array[i]);
if (array2.length === 1) answer += array[i];
}
return answer;
}
일단 Set 객체로 중복된 문자열을 거르고 유일한 값만 저장 배열을 생성한다. 그리고 for문으로 각 문자열마다 filter 메서드를 이용해서 기존 s 문자열에 각 알파벳이 몇 개 들어있는지를 필터링해서, 필터링한 배열의 length가 1일 때만(한 번만 등장하는 문자열인 경우) answer에 더해준 후 최종적으로 answer를 출력한다.
다른 사람의 풀이
function solution(s) {
let res = [];
for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
return res.sort().join('');
}
진짜 너무 감동적인 풀이 🥹🥹 for문을 돌려서 각 알파벳마다 indexOf와 lastIndexOf로 반환한 인덱스가 일치한다면 문자가 한 번만 등장한 것이기 때문에 배열에 push 한다. 그리고 이 배열을 sort와 join으로 알파벳순으로 정렬한 문자열로 가공한 후 출력한다. indexOf와 lastIndexOf로 인덱스를 비교한다는 아이디어가 너무 좋았던 풀이였다!
- indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.
- lastIndexOf() 메서드는 주어진 값과 일치하는 부분을 역순으로 탐색하여, 최초로 마주치는 인덱스를 반환하고 일치하는 부분을 찾을 수 없으면 -1을 반환한다.
회고
오늘은 노션에 따로 정리하고 있는 기술면저 질문 다섯 개 정도 더 정리했다. 이번 주는 기술면접 답변 정리 끝내고 다음 주부터 진짜 본격적으로 지원한다!
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.04.03 기술면접 스터디, Programmers 문제 풀기 (0) | 2023.04.03 |
---|---|
[TIL] 2023.04.02 Programmers 문제 풀기 (0) | 2023.04.02 |
[TIL] 2023.03.31 기술면접 스터디, Programmers 문제 풀기 (0) | 2023.03.31 |
[TIL] 2023.03.30 기술면접 스터디, Programmers 문제 풀기 (0) | 2023.03.30 |
[TIL] 2023.03.29 기술면접 스터디, Programmers 문제 풀기 (0) | 2023.03.29 |
댓글