on
Baekjoon1427: 소트인사이드, System.in.read();
Baekjoon1427: 소트인사이드, System.in.read();
소트인사이드
시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초 128 MB 43447 26601 22398 61.682%
문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
풀이
숫자 크기에 명백한 제한이 있을 때 카운팅 정렬을 생각하게 된다. 각 자리수의 경우 0~9까지 수의 범위는 제한적이다. 10크기의 카운팅 배열을 만들고 숫자에 해당하는 index에 값을 추가해 9부터 0까지 출력한다
Arrays.sort 등을 사용해 코드 길이를 줄일 수 있지만 이번에는 System.in.read()를 통해 풀이했다. N을 입력하지 않기 때문에 하나씩 숫자를 가져와서 비교하기 위해 사용했다.
System.in.read(), char 사용
import java.io.*; public class Main { public static void main(String[] args) throws IOException{ int[] count = new int[10]; for(int i=0; i<10;i++) { int j=Character.getNumericValue(System.in.read()); //System.in.read를 통해 하나씩 if(j!=-1)count[j]++; //값이 비어있을 때 -1을 반환하는데 아닌 값들만 가져온다 else i=10; //-1인 순간 반복문을 종료한다 } for(int i=9;i>-1;i--) for(int j=0;j
System.in.read(), int 사용
import java.io.*; public class Main { public static void main(String[] args) throws IOException{ int[] count = new int[10]; for(int i=0; i<10;i++) { int j=System.in.read()-48; //아스키 코드 한자리 숫자에서 48을 빼면 된다 if(j>-1)count[j]++;else i=10; } for(int i=9;i>-1;i--)for(int j=0;j
17번째... Arrays.sort의 장벽은 높았다
from http://devyoseph.tistory.com/139 by ccl(A) rewrite - 2021-11-05 04:28:07