Javascript - 프로그래머스 10일차

이율곡·2023년 6월 16일

Programmers

목록 보기
10/44
post-thumbnail

10일차

올바르게 접근하기🥳

벌써 50%를 풀었다. 대략 60문제 정도가 남았다. 아직까지도 그렇게 어렵지는 않지만, 내가 잘못 생각하는 경우가 좀 있었다. 그러니 우선 문제의 핵심을 먼저 파악해야겠다.

평일 동안에 매일 문제를 풀고 있기 때문에 느끼는 점은 꾸준히 해야 되겠다라는 생각이다. 꾸준히 해봄으로써 그냥 한 문제를 풀더라도 다가오는 느낌이 다르다. 그래서 10일차는 문제를 풀고 바르게 접근하는 거에 대해서 생각을 해봤다.


오늘의 문제

접미사 배열

이 문제를 오늘의 문제로 선택한 이유는 접두사와 접미사의 차이에 대해 알아야 되기 때문이다. 접두사와 접미사의 차이로 꽤나 내가 무엇을 잘못했는지 확실히 깨달았다.

어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

입출력 예시

my_stringresult
"banana"["a", "ana", "anana", "banana", "na", "nana"]
"programmers"["ammers", "ers", "grammers", "mers", "mmers", "ogrammers", "programmers", "rammers", "rogrammers", "rs", "s"]

접근방법

접근방법은 문제에서 요구하는 내용대로 my_string의 접미사를 배열에 넣고 사전순으로 배열하면 된다. 접근방법대로 진행하면 되는데 우선은 내가 실수한 내용을 우선 적고, 올바른 방법을 적어본다.

실수풀이 / 오답

function solution(str) {
    var answer = [];
    
  	let result = '';
    for(let i = 0; i < str.length; i++) {
		result += str[i];
      	answer.push(result);
    }
    
    answer.sort();
    
    return answer;
}

우선 내가 적은 오답이다. 내 생각대로라면 정답과 같은 풀이가 나왔을텐데 결과는 계속

["b", "ba", "ban", "bana", "banana", "banan"]

이렇게 나왔다. 그 이유는 '접두사'로 배열을 넣었기 때문이다. 접두사로 넣었기 때문에 정렬을 해도 일반적으로 생각하는 사전순으로 되는 것이 아니라. 'b'로 시작하는 접두사를 사전으로 정렬하게 된다. 그렇기 때문에 위와 같이 하면 안된다.

올바른 풀이

function solution(str) {
    var answer = [];
    
    for(let i = 0; i < str.length; i++) {
        answer.push(str.slice(i))
    }
    
    answer.sort();
    
    return answer;
}

올바른 풀이는 이와 같다. 잘린 str를 하나하나 answer 배열에 담으면 접미사로 배열이 가능하다.

["a", "ana", "anana", "banana", "na", "nana"]

코드를 실행하면 원하는 결과가 나온다.


정리하기

문제는 크게 어려운 문제는 아니었다. 하지만 접근 자체를 완전히 잘못해버렸기 때문에 더 어렵게 느꼈다.

컴퓨터는 거짓말을 하지 않는다.

내가 보자. 두 번보고 세 번 보자. 그리고 모르겠다면 검색을 통해, 질문을 통해 내가 어디서부터 잘못된 길을 갔는지를 깨달아야 된다. 우선은 내가 할 수 있는 생각을 충분히 해보자. 그게 나를 성장하는 제일 빠른 길 중에 하나다.

profile
음악을 좋아하는 사람이 음악을 만들 듯, 개발을 좋아하게 될 사람이 쓰는 개발이야기

0개의 댓글