알고리즘/프로그래머스 알고리즘 공부(15)
-
[프로그래머스-Level 0] [JavaScript] 한 번만 등장한 문자 - 객체(Object) 활용
[문제] 문자열 s가 주어집니다. 문자열 s는 'addeeffc' 이렇게 알파벳으로 구성되어 있는데, 여기에서 알파벳이 하나만 나오는 문자를 알파벳 순서로 정렬해서 출력하는 것이 문제입니다. [알고리즘] 여러 가지 방법이 있지만 저는 객체와 변수를 활용했습니다. split('')를 활용하여 'abcd'를 'a', 'b', 'c', 'd' 형태로 분리할 수 있고 sort를 통해 알파벳 순서로 정렬할 수 있고 객체(object)의 키 값을 활용하였습니다. [풀이] 아래 코드를 보시면 먼저 const str = {} 객체로 선언하고 arr 배열을 선언하여 문자열을 하나씩 분리해서 저장한 다음 정렬을 먼저 진행했습니다. 그 다음 forEach 함수를 돌려서 문자마다 몇 개가 나왔는지 카운트를 해줍니다. 그 다음..
2023.01.17 -
[프로그래머스-Level 1] [JavaScript] 숫자 문자열과 영단어 - 객체 사용
[문제] 2021 카카오 채용연계형 인턴십 문제입니다. 입력값 s가 주어집니다. 이 s는 one4seveneight처럼 일부 숫자가 영어 문자로 변환된 값입니다. 이 문자열을 모두 숫자로 변환하는 것이 문제입니다. [알고리즘] 객체, while, indexOf, replace 사용 [풀이] 저는 객체 key: value를 활용하였으나 단순 배열, replace만 사용하는 등 더 간결하게 작성할 수 있습니다. 1) 객체를 먼저 선언해서 zero부터 nine까지 key: value로 pair 될 수 있게 해줍니다. 2) while 반복문을 사용해서 s가 영어 문자를 포함하는 경우 즉 순전한 숫자가 아닌 경우를 판별합니다. 3) for (const key in num)를 활용해서 num 객체에 선언되어 있는 ..
2022.12.05 -
[프로그래머스-Level 1] [JavaScript] 신고 결과 받기 - 해시 사용
[문제] 2022 KAKAO BLIND RECRUITMENT 문제입니다. 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려고 합니다. 그 시스템은 아래와 같습니다. 1) 각 유저는 한 번에 한 명의 유저를 신고할 수 있고 제한 없이 다른 사용자를 계속 신고 가능하지만 동일한 사용자에 대한 신고 횟수는 1회로 간주함 2) k번 이상 신고된 유저는 게시판 이용 정지되고, 해당 유저를 신고한 모든 사용자에게 정지되었다는 메일을 발송하는데 유저가 신고한 모든 내용 취합하여 마지막에 정지 메일을 발송하는 방식 유저 ID 신고한 ID 설명 "muzi" "frodo" "muzi"가 "frodo"를 신고 "apeach" "frodo" "apeach"가 "frodo"를 신고 "..
2022.12.05 -
[프로그래머스-Level 1] [JavaScript] 행렬의 덧셈 - 배열
[문제] 같은 행과 같은 열의 값을 더한 배열을 반환하면 됩니다. [알고리즘] 알고리즘은 간단합니다. 먼저 forEach문으로 answer에 배열을 넣어주고 for 문을 이용해서 각각 row col대로 더해준 값을 넣어주면 됩니다. [풀이] 아래 코드를 참고하시면 되고, answer.push([])로 배열을 안에다가 넣어줍니다. 그리고 2중 반복문을 통해 각 행, 각 열을 더해주면 됩니다. function solution(arr1, arr2) { const answer = []; arr1.forEach(e => { answer.push([]); }); for (let row = 0; row < arr1.length; row++) { for (let col = 0; col < arr1[row].length..
2022.12.02 -
[프로그래머스-Level 1] [JavaScript] 완주하지 못한 선수 - Hash 사용
[문제] 마라톤 선수들이 마라톤에 참여하여 1명의 선수만 완주하지 못하고 모두 마라톤을 완주한다고 가정합니다. 마라톤 참가자 배열 participant와 완주한 참가자 배열인 completion이 입력값 매개변수로 주어질 때, 완주하지 못한 선수를 return해보세요. 입력 테스트 값은 아래와 같습니다. participant (참가한 선수) completion (완주한 선수) return (완주하지 못한 선수) ["leo", "kiki", "eden"] ["eden", "kiki"] "leo" [알고리즘] Hash 데이터 자료형을 사용합니다. 즉 Map 또는 객체(Object) 형태를 사용하시면 됩니다. [풀이] 저는 객체로 풀이를 진행했습니다. 먼저 객체 변수 players를 선언하고 participa..
2022.12.01 -
[프로그래머스-Level 1] [JavaScript] 명예의 전당(1) - 배열, 정렬, splice 활용
[문제] 명예의 전당이라는 TV 프로그램이 있습니다. 매일 1명의 가수가 노래를 부르고 시청자들이 문자투표로 점수를 부여합니다. 상위 k번째 이내인 경우, 그 점수를 명예의 전당 목록에 올립니다. 프로그램 시작 이후 k일까지는 모든 점수가 목록에 오르지만 k개수를 초과하는 경우 최대 k번째까지 높은 점수만 남기고 다른 점수들은 목록에서 제외됩니다. 총 발표 점수를 배열 형태로 반환하는 것이 문제입니다. 아래 표를 참고하시면 됩니다. 일차 1 2 3 4 5 6 7 score 10 100 20 150 1 100 200 명예의 전당 (k = 3) 10 100 10 100 20 10 150 100 20 150 100 20 150 100 100 200 150 100 발표 점수 10 10 10 20 20 100 1..
2022.11.30