[프로그래머스] Java 코딩테스트 - 문자열 정렬하기 (1)

yihyun·2025년 4월 19일

코딩테스트

목록 보기
57/105
post-thumbnail

문자열 정렬하기 (1)

✅ 문제 설명

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

✅ 제한사항

1 ≤ my_string의 길이 ≤ 100
my_string에는 숫자가 한 개 이상 포함되어 있습니다.
my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.

🔽 소스코드 1 (Arrays.copyOf 사용)

💻 풀이

  • 문자열의 길이만큼 반복해준 후
  • charAt()을 이용해 문자열을 하나씩 분리해준다.
  • 이후 해당 문자가 숫자일 경우 배열에 값을 넣어준다.
  • 이때 charint로 만들기 위해 Integer.parseInt(String.valueOf(ch)) 을 사용해주고
  • Arrays.copyOf()로 새로운 배열을 만들어 준 후
  • Arrays.sort() 를 사용해 배열을 오름차순으로 정렬한 후 return 해준다.

시간 0.61ms ~ 1.67ms

	public int[] solution(String my_string) {
		
		int[] arr = new int[my_string.length()];
		int j = 0;
		
		for(int i = 0; i < my_string.length(); i++) {
			
			char ch = my_string.charAt(i);
			
			if(Character.isDigit(ch)) {
				System.out.println(j);
				arr[j] = Integer.parseInt(String.valueOf(ch));
				j++;
				
			}
		}

		arr = Arrays.copyOf(arr, j);
		Arrays.sort(arr);
		
		return arr;
	}

🔽 소스코드 2 (list 및 stream 사용)

💻 풀이

  • List<> 를 선언한 후
  • 문자열 길이 만큼 반복해주며 숫자일 경우 list에 add로 숫자를 넣어준다.
  • 이후 int[]로 return 하기 위해
  • sorted() 로 정렬 후 mapToInt(i -> i) 로 언박싱 해준 후 toArray()로 배열로 return 해준다.

📌 (i -> i) 는 숫자 그대로를 바꿀 때 사용하며 주로 Integer 를 int로 언박싱할 때 사용한다.
📌 (Integer::parseInt) 는 String 을 숫자로 바꿀 때 사용한다.

시간 2.45ms ~ 5.81ms

	public int[] solution1(String my_string) {
		
		List<Integer> list = new ArrayList<>();		
		
		for(int i = 0; i < my_string.length(); i++) {
			if(Character.isDigit(my_string.charAt(i))) {
				list.add(Integer.parseInt(String.valueOf(my_string.charAt(i))));
			}
		}

		return list.stream().sorted().mapToInt(i -> i).toArray();
	}
profile
개발자가 되어보자

0개의 댓글