[99클럽 코테 스터디_ DAY 1] 자연수

yewon·2024년 7월 22일
0

스터디

목록 보기
1/22
post-thumbnail

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

✏️오늘의 문제 : 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열로 리턴하기

💡나의 풀이



    public int[] solution(long n) {
        String word = Long.toString(n);
        int[] answer = new int[word.length()];

        int index = word.length() - 1;
        int a = 0;
        
        for (int i = index; i >= 0; i--) {
            answer[a] = word.charAt(i) - '0';
            a++;
        }
        
        return answer;
    }

먼저, 문자열에서 각 자리수를 개별 문자로 추출하기 위해 charAt 메서드를 사용해 특정 인덱스에 있는 문자를 반환합니다. 이후, 각 문자의 ASCII 값을 활용하여 숫자로 변환하는데, 예를 들어 문자 '0'의 ASCII 값은 48이고, 문자 '3'의 ASCII 값은 51입니다. 이러한 ASCII 값을 이용하여 정수로 변환할 수 있는데, 문자 '3'의 경우 51에서 48을 빼면 3이라는 정수 값을 얻을 수 있습니다. 이렇게 변환한 정수를 배열에 담았습니다.

💡다른 방식의 풀이


public int[] solution(long n) {
    		int index = Long.toString(n).length();
    		int[] answer = new int[index];
    		int i = 0;
    		while(n>0) {
    			answer[i] = (int)n%10;
    			i++;
    			n/=10;
    			
    		}
    		return answer;
    	}

자연수라는 점을 중점에 두고 10으로 나누어 나머지를 배열에 담는 방식으로 문제를 풀어보았습니다. int []는 배열의 크기를 정해주어야하기에 문자열로 바꾸어 자리수를 구해서 넣어줘야한다는 것이 아쉬웠습니다. 동적 배열인 ArrayList를 사용하면 더 깔끔할것 같습니다.

💡ArrayList 사용


  	public ArrayList<Integer> solution(long n) {
  		ArrayList<Integer> answer = new ArrayList<Integer>();
  		int i =0;
  		while(n>0) {
  			answer.add((int) (n%10));
  			i++;
  			n/=10;
  			
  		}
  		return answer;
  	}

➕ 참고

ArrayList란?

배열을 기반으로 한 컬렉션의 하나이며, 데이터를 추가, 삭제시 내부에서 동적으로 배열의 길이를 조절해준다.

ArrayList의 특징

  1. 동적 크기
    ArrayList는 요소의 추가 및 삭제가 가능하여, 배열과 달리 크기가 동적으로 변화합니다. 초기 크기를 설정할 수 있지만, 필요에 따라 자동으로 크기가 조절됩니다.

  2. 인덱스 기반 접근
    ArrayList는 인덱스를 사용하여 요소에 접근합니다. 이는 빠른 검색과 수정이 가능하다는 장점이 있습니다.

  3. 중복 요소 허용
    ArrayList는 중복된 요소를 허용합니다. 동일한 값을 여러 번 추가할 수 있습니다.

  4. null 값 허용
    ArrayList는 null 값을 요소로 저장할 수 있습니다. 따라서 null 값도 리스트에 추가할 수 있습니다.

  5. 성능
    ArrayList의 요소 추가는 평균적으로 O(1)의 시간 복잡도를 가지지만, 배열의 크기가 초과할 경우 O(n)으로 증가할 수 있습니다. 요소 삭제는 평균적으로 O(n)입니다.

  6. 제네릭 지원
    ArrayList는 제네릭을 지원하여, 특정 타입의 객체만 저장하도록 제한할 수 있습니다. 이를 통해 타입 안전성을 높일 수 있습니다.

  7. 순서 유지
    ArrayList는 요소를 추가한 순서를 유지합니다. 따라서 리스트에 저장된 요소들은 항상 추가된 순서대로 정렬됩니다.

0개의 댓글