본문 바로가기

Algorithm/프로그래머스

[프로그래머스/Java] 자연수 뒤집어 배열로 만들기

728x90
반응형

1단계

 

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

 

int length = Long.toString(n).length();

입력 n을 문자열로 변환하고 그 길이를 구해 length 변수에 저장.

 

다른 사람 풀이
import java.util.stream.IntStream;

class Solution {
    public int[] solution(long n) {
        return new StringBuilder().append(n).reverse().chars().map(Character::getNumericValue).toArray();
    }
}

1. new StringBuilder().append(n)
   StringBuilder 인스턴스를 생성하고, append(n) 메소드를 사용하여 long 타입의 n을 문자열로 변환하고 StringBuilder에 추가한다

2. reverse()
   StringBuilder 인스턴스의 reverse() 메소드를 호출하여 문자열을 뒤집는다

3. chars()
   chars() 메소드를 호출하여 문자열의 각 문자를 int 타입의 값으로 표현하는 스트림을 얻는다

   이 스트림은 각 문자의 Unicode 코드 포인트를 원소로 한다

4. map(Character::getNumericValue)
   map 메소드를 사용하여 스트림의 각 원소에 Character::getNumericValue 함수를 적용한다

   이 함수는 각 문자의 Unicode 코드 포인트를 해당 문자가 표현하는 int 타입의 숫자 값으로 변환한다

5. toArray()
   스트림의 toArray() 메소드를 호출하여 스트림의 모든 원소를 배열에 담아 반환한다

 

class Solution {
  public int[] solution(long n) {
      String a = "" + n;
        int[] answer = new int[a.length()];
        int cnt=0;

        while(n>0) {
            answer[cnt]=(int)(n%10);
            n/=10;
            System.out.println(n);
            cnt++;
        }
      return answer;
  }
}

 

"" 이 부분은 빈 문자열을 의미

"" + n: 여기서 + 연산자는 문자열 연결 연산자로 작동

n은 long 타입의 변수이지만, 문자열 연결 연산자를 사용하여 문자열과 결합하면

n은 자동으로 문자열로 변환된다.

 

오랜만에 코테하려니 1단계도 어렵다ㅠ

728x90
반응형