반응형
안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1090 : [기초-종합] 수 나열하기 2 (자바, JAVA)입니다.
Links
Question
문제 설명
입력
시작 값(a), 등비의 값(r), 몇 번째 인지를 나타내는 정수(n)가 공백을 두고 입력된다.(모두 0 ~ 10)
출력
n번째 수를 출력한다.
예시
- 입력 : 2 3 7
- 출력 : 1458
Solution (풀이)
- 풀이 1 : 메모리 14336, 시간 113
public class Answer1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextInt();
int r = sc.nextInt();
int n = sc.nextInt();
// 물론 for문을 사용하도 무관하다.
// while문을 이용하여 n을 1씩 줄여나가고 그 숫자가 1이상이어야만 반복한다.
while(n-->1) {
a *= r; // 반복할 때 마다 등비의 값 r만큼 시작 값 a에 곱하여 준다.
}
System.out.println(a);
sc.close();
}
}
1번 풀이는 Scanner와 while문을 이용한 풀이 입니다. 일반적으로 쉽게 생각할 수 있는 방법이지만 반복문이 사용 되다 보니 확실히 성능이 좋지 않습니다.
while문과 for문 언제 구분해서 사용해야 할까??
* while : 반복되는 횟수를 모를 때
* for : 반복되는 횟수를 정확히 알 때
- 풀이 2 : 메모리 11168, 시간 65
public class Answer2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
long a = Integer.parseInt(st.nextToken());
int r = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
// 시작 값 a에 Math.pow() 메소드를 사용하여 r의 n-1만큼 제곱한 숫자를 곱한다.
// n-1만큼 제곱하는 이유는 시작값 a도 n번째 숫자의 첫 숫자이기 때문이다.
a *= Math.pow(r, (n-1));
System.out.println(a);
}
}
2번 풀이처럼 반복문을 생략하고 자바에서 제공하는 Math.pow() 메소드를 사용하여 쉽게 해결 할 수도 있다.
Review
- 한 문제를 여러가지 방법으로 푸는 연습을 하는 것이 생각보다 저에겐 많은 도움이 되었습니다.
- 어떤 특정 코드를 구현해야 할 때, 한가지 방법만 알고 있다면 해당 방법이 통하지 않을 때 다른 대안을 모르기 때문입니다. 화이팅!
반응형
'Algorithm > CodeUp' 카테고리의 다른 글
[CodeUp_Java] Q1094 : [기초-종합] 이상한 출석 번호 부르기2 (0) | 2022.04.18 |
---|---|
[CodeUp_Java] Q1093 : [기초-종합] 이상한 출석 번호 부르기1 (0) | 2022.04.18 |
[CodeUp_Java] Q1092 : [기초-종합] 함께 문제 푸는 날 (0) | 2022.04.18 |
[CodeUp_Java] Q1091 : [기초-종합] 수 나열하기 3 (0) | 2022.02.24 |
[CodeUp_Java] Q1089 : [기초-종합] 수 나열하기 1 (0) | 2022.02.24 |