참고
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int a, b;
a = sc.nextInt();
b = sc.nextInt();
System.out.println(a + b);
}
}
의문점
import java.util.*; 가 의미 하는 것은 무엇일까?
처음에는 a의b제곱해서 10으로 나누면 되는거 아니야?
하지만, 너무 큰 수가 나와서 다른 방법을 찾기로 했다.
그러다가 규칙을 발견 했는데 제곱수의 끝자리가 반복된다.
2 4 16 64 128 512 1024 ... -> 2, 4, 6, 8
3 9 27 81 243 .... > 3, 9, 7, 1
4 16 64 256 1024 -> 4, 6
5 25 125 625 ... -> 5
6 36 216 ... ->6
7 49 343 2401 ... -> 7, 9, 3, 1
8 64 512 4096 ....-> 8, 4, 2, 6
9 81 729 ...1 -> 9, 1
어떤 일정 주기가 발견 되었고, 10으로 나누어 주었을 때 나머지 값이 마지막 데이터를 계산하고 있는 컴퓨터의 순서 이므로 자바의 나머지 연산자 : %
를 이용하기로 했다.
import java.util.*;
public class Algorithms02 {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int t;
t = sc.nextInt();
ArrayList<Integer> result = new ArrayList<>();
for( int i = 0 ; i < t ; i ++ ) {
int a, b, computerN;
a = sc.nextInt();
b = sc.nextInt();
int computer[] = {};
switch(a % 10) { // a를 10으로 나눈 나머지가
case 0 :
computerN = 10;
result.add(computerN);
break;
case 1 :
computerN = 1;
result.add(computerN);
break;
case 2 :
int[] pattern2 = new int[]{6,2,4,8}; // 2의 제곱수들의 앞자리 패턴
int remainder2 = (b % 4) ;
computerN = pattern2[remainder2];
result.add(computerN);
break;
case 3 :
int[] pattern3 = new int[]{1,3,9,7}; // 3의 제곱수들의 앞자리 패턴
int remainder3 = (b % 4) ;
computerN = pattern3[remainder3];
result.add(computerN);
break;
case 4 :
int[] pattern4 = new int[]{6,4}; // 4의 제곱수들의 앞자리 패
int remainder4 = (b % 2) ;
computerN = pattern4[remainder4];
result.add(computerN);
break;
case 5 :
computerN = 5;// 5일 때는 항상 5
result.add(computerN);
break;
case 6 :
computerN = 6; // 6일 때도 항상 6
result.add(computerN);
break;
case 7 :
int[] pattern7 = new int[]{1,7,9,3}; // 7의 제곱수들의 앞자리 패
int remainder7 = (b % 4) ;
computerN = pattern7[remainder7];
result.add(computerN);
break;
case 8 :
int[] pattern8 = new int[]{6,8,4,2}; // 8의 제곱수들의 앞자리 패턴
int remainder8 = (b % 4) ; //
computerN = pattern8[remainder8];
result.add(computerN);
break;
case 9 :
int[] pattern9 = new int[]{1,9}; // 9의 제곱수들의 앞자리 패
int remainder9 = (b % 2);
computerN = pattern9[remainder9];
result.add(computerN);
break;
}
}
for(int k=0; k<result.size(); k++){
System.out.println(result.get(k));
}
}}
참고자료
Arraylist 사용하기 - 생활코딩
백준 1009 풀이
switch - case statement
첫번째 접근
1,2,3번째 값들을 모두 배열을 지정해주고,
입력값(scanner)을 받아서 (첫번째 값 10 + 두번째 값) 마지막 값을 계산해서 출력해주는 식으로 소스를 짜려고 하면 좋을 것 같다. 어떻게 해야 할까?
string - > int 로 바꾸기 : parseint 문법 개념
앗 노아 블로그 찾았다😆 어제 알고리즘 푸느라 고생 많으셨어요!!