오늘은 알고리즘 day
2021년 1월 6일
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int num = s.nextInt();
int a, b;
int[] answer = new int[num];
for (int i = 0; i < answer.length; i++) {
a = s.nextInt();
b = s.nextInt();
int result = 1;
for(int j = 0; j < b; j++){
result = result * a;
if(result > 10) result = result % 10;
}
answer[i] = result;
if (answer[i] == 0) answer[i] = 10;
}
for(int i = 0; i < answer.length; i++) {
System.out.println(answer[i]);
}
}
}
처음에 Math.pow() 메서드로 했는데 테스트 케이스 중 7의 100승과 9의 635가 long 타입의 범위도 넘는 바람에 어떻게 해야될지 막막
구글링 해보니 for 문으로 입력받은 b만큼 곱해주는 방식으로 하고, 10이 넘으면 %연산자를 이용했다.
사실 % 연산자로 연산한 결과에 또 a를 곱하면 그게 나머지 값이 아닌 거랑 연산하는거랑 왜 같은지 잘 이해가 안갔다.
노트에 적어서 비교해보니 항상 1의 자리 수는 같다.
예) 3의 6승
- 3
- 9
- 27 → 7
- 81 → 21 (1) 여기서 이전단계인 27에 3을 곱한 값이랑 %연산을 한 7에 3을 곱한 값이랑 일의 자리 값이 같다는 걸 알 수 있다.
- 243 → 3
- 729 → 9
색에 해당하는 값을 n 이라고 치면 곱은 10의 n 승임
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String[] color = new String[3];
color[0] = s.next();
s.nextLine();
color[1] = s.next();
s.nextLine();
color[2] = s.next();
int[] value = new int[3];
for (int i = 0; i < value.length; i++) {
switch (color[i]) {
case "black":
value[i] = 0;
break;
case "brown":
value[i] = 1;
break;
case "red":
value[i] = 2;
break;
case "orange":
value[i] = 3;
break;
case "yellow":
value[i] = 4;
break;
case "green":
value[i] = 5;
break;
case "blue":
value[i] = 6;
break;
case "violet":
value[i] = 7;
break;
case "grey":
value[i] = 8;
break;
case "white":
value[i] = 9;
break;
}
}
String twoValue = String.valueOf(value[0]) + String.valueOf(value[1]);
long answer = Integer.parseInt(twoValue) * (long) Math.pow(10, value[2]);
System.out.println(answer);
s.close();
}
}
입력받는 부분부터 어떻게 해야하지 싶었다. 입력값을 한 행씩 받아오는데..
입력값을 배열로 받아와서 for문으로 돌리면 편한데 처음에 무식하게 입력받은 값을 하나하나 switch 문 돌려서 코드에 저 긴 switch 문이 세번이나 들어갔다
[기초-입출력] 실수 1개 입력받아 그대로 출력하기(설명)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
float a = s.nextFloat();
System.out.print(String.format("%.6f",a));
}
}
a를 출력할때 String.format() 없이 출력했더니 통과하지 못했다.
String.format("%.6f" ,a)
안녕하세요, tech 기업에서 일하는/ 일하기를 희망하는 여성들을 모아서 모임을 만들고 있어요!
자세한 사항은 및 링크 참조바랍니다 :)
https://velog.io/@emilyscone/SheKorea-1%EA%B8%B0-%EB%A9%A4%EB%B2%84%EB%A5%BC-%EB%AA%A8%EC%A7%91%ED%95%A9%EB%8B%88%EB%8B%A4