본문 바로가기
🍪 Ect/#Study

[99클럽 코테 스터디] 1일차 TIL 배열

by 개발한 너굴씨 2024. 7. 22.
728x90

 

 

 

 

오늘의 문제는 프로그래머스

 

자연수 뒤집어 배열로 만들기 

 

 

문제 

 

 

 

문제 접근 및 풀이 과정

 

문제의 권장 풀이 시간은 30분이었고, 저는 20분에 걸려 풀었습니다. 

 

로직을 수기로 작성한 상태에서 코드를 작성했기 때문에 수월하게 풀 수 있을 줄 알았지만, 반복문의 조건과 본문을 잘못 설정해서 예상보다 시간이 조금 더 걸리게 됐습니다. 

 

 

 

문제 접근 방식

 

처음 문제를 접했을 때 든 생각은 '반복문을 사용한 단순 구현문제'구나 였습니다.

 

그래서 우선, 주어진 n을 문자열로 변환해서 각 인덱스에 접근하기 쉽게 하는것이 좋겠다고 생각했습니다.

 

그 다음 반복문을 통해 문자를 역순으로 배열에 저장하도록 설계했습니다. 

 

 

문제 풀이

class Solution {
    public int[] solution(long n) {
        
        String str = String.valueOf(n);
        int len = str.length();
        
        int[] answer = new int[len];
        
        for (int i = 0; i < len; i++) {
            answer[i] = str.charAt(len - 1 - i) - '0';
        }   
        
        return answer;
    }
}

 

 

자연수 n을 문자열로 변환한 이유는?

 

n을 문자열로 변환하면 각 자릿수에 charAt을 사용해서 쉽게 접근을 할 수 있습니다. 

 

자연수 그대로 코드를 짤려면 10으로 나눈 나머지를 추출하는 번거로운 작업을 해야 하기 때문에 비효율 적이라고 판단했습니다. 

 

 

반복문 설계 자세히 알아보기

 

반복문은 초기화 부분과 본문 부분으로 나뉩니다.

 

반복문 초기화

(int i = 0; i < len; i++)

 

위 코드에서 i는 0으로 초기화되어 i < len까지 반복되고 반복이 끝날 때마다 i값은 1씩 증가합니다.

 

반복문 본문 

 

answer[i] = str.charAt(len - 1 - i) - '0';

 

answer[i]는 저장할 배열의 인덱스를 의미합니다.

 

str.charAt(len - 1 - i)는 문자열 인덱스의 뒤에서 i번째 문자를 가져오는 부분입니다.

 

코테를 풀다보면 문자열 인덱스를 다루는 부분이 많이 나오는데 나올 때마다 손에 익히고 있습니다.

 

그리고 여기서 -'0'이 나오는 이유는 문자를 숫자로 변환해야 하기 때문입니다. 

 

 

이렇게 오늘 1일차 TIL을 작성해 보았습니다. 

 

728x90

댓글