99클럽 코테 스터디 1일차 TIL - Java

김동하·2024년 7월 22일
0

알고리즘

목록 보기
54/90
post-custom-banner

문제

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

풀이

  • n을 먼저 string으로 변환하고, string의 length 만큼의 int[]를 생성한다
  • string을 순회하면서 마지막 index부터 int[]에 할당한다.

코드

import java.util.*;

class Solution {
    public int[] solution(long n) {
        String longToStr = Long.toString(n);
        int[] answer = new int[longToStr.length()];  
        
        for(int i = 0; i < longToStr.length(); i++){
            answer[i] = Character.getNumericValue(longToStr.charAt(longToStr.length() - i -1));
        }
        return answer;
    }
}

정리

  • java에서 형변환하는 건 아직도 익숙하지 않음.

  • for loop을 돌 때 index을 잘못 설정했는데 곧바로 StringIndexOutOfBoundsException을 뱉었다. js는 인덱스 넘어가도 undefined 뱉어서 휘뚜루마뚜루 넘어갔던 거 같은데 java는 굉장히 까다롭다.

  • java는 String 클래스를 사용하기 때문에 클래스에서 제공하는 length()로 문자열 길이를 가져온다.

  String longToStr = Long.toString(n);
  int[] answer = new int[longToStr.length()];  
  • charAt은 문자열에서 특정 인덱스에 위치한 문자를 반환하는데 사용한다. 자꾸만 습관적으로 string[i]로 접근하려고 하는데, String 클래스이기 때문에 인덱스로 접근이 불가하다.

  • Character.getNumericValue는 char 타입의 데이터를 int 타입으로 변경해준다.

  • 다른 사람들 풀이를 보니 String[] 으로 변환해서 index로 접근, 그리고 Integer.parseInt()를 사용하여 int로 변경 후 int[]에 담았다.

  • StringBuilder도 많이 사용하였는데, StringBuilder는 문자열을 다루는 클래스라고 한다. 간단하게 .reverse()해도 될듯

  • HashSet같은 컬렉션을 사용할 때, HashSet<int>가 아니라 HashSet<Integer>를 사용하는데(이 부분이 굉장히 헷갈렸다) Integer는 int의 래퍼 클래스로 참조 데이터 타입이라고 한다. 그래서 참조형 List, Set 등 객체만 저장할 수 있는 컬렉션에서는 Integer를 사용!

profile
프론트엔드 개발
post-custom-banner

0개의 댓글