카테고리 없음

20240808 (목) 프로그래머스 13번 코드풀이

ddh1713 2024. 8. 8. 17:47

지피티의 도움을 받았지만, 혼자힘으로 코드를 작성해본 시간이었다. 지피티에 있는 내용을 복붙하지말고, 모르는 개념만 물어보라는 다른 팀의 실력자분 조언을 얻어, 인텔리제이의 자동완성 기능을 껏고, 지피티를 나에게 도움이 되도록 사용하기로 했다.

그리고 오늘 코드카타는 1시간 동안 진행되었지만, 나는 거의 3시간을 꽁꽁 싸매서, 겨우 풀어낸 것 같다. 도중에 현석훈 튜터님께 조언도 받고 하니, 코드가 어느덧 완성이 되었고, 통과도 했다. 그런데, 내 인텔리제이는 클래스가 여러개 생기고, 해서 코드가 실행되었는데, 프로그래머스에서는 해당 클래스만 있어도 통과를 한게 조금 이해가 안되었다. 그래도 인텔리제이에 기록한 내용을 공유하고 리뷰해봐야겠다.

import Programmers.Sol13.Sol13;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        Sol13 sol13 = new Sol13();
        sol13.sol13(13);

    }
}

모든 실행 동작은 Main 문에서 시작된다고 한다.Sol13 클래스의 메서드, 생성자를 실행시키고 싶다면, 메인 클래스에서 해당 클래스의 객체를 생성하면 된다.

그래서 내힘으로 객체를 생성해보았고,

객체를 생성한다음, sol1(int num) 메서드를 구현해 보았다.

package Programmers.Sol13;

public class NumericValue{
    
}

이 클래스는 원래 내가 만든게 아닌데, Main 문에서 프로그램을 실행시키니 갑자기 생겼다. 왜 생겼지...?

package Programmers.Sol13;

// [문제] 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들자

public class Sol13 {
    public int sol13(int num) {
        int answer = 0;

        String strNum = Integer.toString(num); // 숫자 -> 문자열
        // 문자열에서 각 자리수들을 뽑아내기 (반복문 사용)
        for(int i = 0; i < strNum.length(); i++) {
            int sum = Character.getNumericValue(strNum.charAt(i));
            answer += sum;
        }

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("N의 각 자리수의 합 = " + answer);

        return answer;
    }
}

// GPT 에게서 얻은 힌트
// (1) toString() 메서드 => 모든 곳에 생략되어 있는 함수이다!! 또 추가설명??
// 다른 형태의 값을 문자열 형식으로 반환해준다.

// (2) getNumericValue
// 문자를 숫자로 바꿔준다.
// 문자 '3' 일 때는 계산이 안되었지만, getNumericValue 를 통해 진짜 숫자 3으로 바꾸면 덧셈이나 뺄셈이 가능해진다.

// (3) 객체.charAt(i)
// 문자열에서 i번째(0부터시작) 문자를 Select
// 객체의 특정위치(0부터 시작해서 i번째)의 글자를 가져오고 싶을 때 사용

지피티에게서 toString() 메서드에 대한 정보를 제공받았다. 어제 들었던 메서드 내용인데 다시 쓰려니 헷갈렸다. 오늘도 쓰면서 조금은 더 친해진 느낌이 든다. getNumericValue 는 처음보는 친구였고, NumericValue 가 문자를 숫자로 바꿔주는 메서드라고 한다. CharAt(i)를 통해서 문자열의 i번째 문자를 불러올 수 있었다. 이렇게 배운 메서드를 이용해서 반복문 안에

각 자리 수의 합이 계산 되도록 새로운 변수 sum 을 선언해서 값을 대입해줬다. 그리고 각 자리 수의 합을 출력하는 것 까지 스스로 개발해냈다. 뿌듯하다 끝!!