- 1 이상의 입력 값 n을 통해 반복문으로 n개의 index를 list에 입력
- Collections.sort 함수를 통해 오름차순으로 정렬
- 출력
import java.io.*; import java.util.*; public class boj2751 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br.readLine()); int cnt = 0; ArrayList<Integer> arr = new ArrayList<>(); for (int i = 0; i < n; i++) { arr.add(Integer.parseInt(br.readLine())); } Collections.sort(arr); StringBuilder sb = new StringBuilder(); for (int i = 0; i < n; i++) { sb.append(arr.get(i) + "\n"); } bw.write(sb.toString()); bw.flush(); bw.close(); br.close(); } }
- Arrays.sort(list) && list.sort() 와 Collections.sort(list)의 차이!
- 시간 관점에서 StringBuilder >> String (initial capacity가 너무 크지 않을 때)
참고: https://yeon-kr.tistory.com/157
- n을 입력받는다
- String.valueOf(int).split("")를 통해 자릿 수를 배열로 생성
- for 반복문을 통해 sum 값과 결과 값을 저장
- 2번과 3번의 내용을 do ~ while()문을 통해 카운트
- 카운트 출력
import java.io.*; public class boj1110 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int result = n; int cnt = 0; do{ String[] index = String.valueOf(result).split(""); int[] num = new int[index.length]; for (int i = 0; i < num.length; i++) { num[i] = Integer.parseInt(index[i]); } int sum = 0; for (int i = 0; i < num.length; i++) { sum += num[i]; if(sum >10){ sum = sum -10; }else if(sum ==10){ sum = 0; } } cnt++; result = num[index.length -1]*10 + sum; }while(n != result); System.out.println(cnt); } }
- int 변수의 자릿 수를 나누어 계산에 활용 할 수 있는가
- n을 입력 받는다.
- 비교를 위한 변수 cnt를 1로 생성하고 분해합이 있는지를 위한 boolean 변수 생성
- while문을 반복하며 분해합이 있을 경우 boolean 변수를 true로 바꾸고 break
- 생성자의 경우 n의 값을 넘을 수 없기 때문에 cnt==n이 되면 반복문 종료
- boolean변수가 true인 경우 0 출력, false인 경우 cnt 출력
import java.io.*; public class boj2231 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int cnt = 1; boolean isEmpty = false; while(cnt <n){ String a = String.valueOf(cnt); String[] index = a.split(""); int sum =0; for (int i = 0; i < index.length; i++) { sum += Integer.parseInt(index[i]); } if((cnt+sum) == n){ isEmpty = true; break; }else{ cnt++; } } if(!isEmpty){ System.out.println(0); }else{ System.out.println(cnt); } } }
- int 변수의 자릿 수를 나누어 계산할 수 있는지
- 생성자가 없는 경우에 대한 예외처리를 했는지