ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스 1단계] 성격 유형 검사하기
    알고리즘 2024. 1. 26. 16:18

    ❓문제 설명

    1. length가 2인 문자열로 이루어진 배열을 줄 것임
    2. 숫자로 이루어진 동일한 length의 배열도 하나 줄 것임
    3. 두개를 짬뽕해서 어쩌구저쩌구 해서 문자 하나만 뽑으셈
    4. 사실 MBTI였음 이때까지 나온거 합쳐서 length가 4인 문자열 하나 출력해보셈
    function solution(survey, choices) {
        const types = {}
        const answer = []
        "RTCFJMAN".split("").map(item => types[item] = 0)
        const newChoices = choices.map(item => item - 4)
        for (item of survey) {
            const [left, right] = item.split("")
            const index = survey.indexOf(item)
            const value = newChoices[index]
            value > 0 ? types[right] += value : types[left] -= value 
        }
        
        const keys = Object.keys(types)
        for (let i = 0; i < keys.length; i +=2) {
            const left = keys[i]
            const right = keys[i + 1]
             types[left] >= types[right] ?  answer.push(left) : answer.push(right)
        }
        
        return answer.join("");
    }
    • 테스트 코드는 통과하였지만 제출할 때 정답률 60%로 나오는데 왜 이러는걸까?

    ✅ 문제 해결

    function solution(survey, choices) {
        const types = {}
        let answer = ''
        "RTCFJMAN".split("").map(item => types[item] = 0)
        const newChoices = choices.map(item => item - 4)
        for (let i = 0; i < choices.length; i++) {
            const [left, right] = survey[i].split("")
            const index = survey.indexOf(survey[i])
            newChoices[i] >= 0 ?  types[right] += newChoices[i] : types[left] -= newChoices[i]
            
        }
        const keys = Object.keys(types)
        for (let i = 0; i < keys.length; i +=2) {
            const left = keys[i]
            const right = keys[i + 1]
             types[left] >= types[right] ?  answer += left : answer += right 
        }
        return answer
    }
    • 결과적으로 보았을 때에는 for...of를 for문으로 바꿨는데 제대로 작동이 되는 느낌이다.
    • indexOf()는 가장 처음에 있는 걸 가져오니까 중복된 질문이 있을 시에 이상하게 답변을 하게 되는구나 저게 문제였네..

     

    ❕느낀점

    1. indexOf() 는 중복을 일으킬 수 있으니깐 index가 필요한 반복문의 경우에는 그냥 반복문을 이용하자 for..of는 index를 제공하지 않는다.
    2. key를 반복적으로 이용하기 위해 이터러블한 배열로 만드는 방법 Object.keys(obj) 기억해두면 쓸모 있을 듯

    댓글

Designed by Tistory.