프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12899)
자바 Level 2 문제의 124나라의 숫자 이다.
일단 나눗셈으로 시작했다. 1,2,3 이라는 수가 실수 짝수 홀수 다 확인을 가능케 해주는 수라고 생각하여 나눗셈을 통해서 List<Integer>의 구현객체인 ArrayList<Integer> 를 사용하여 각 수로 놓고 그 것을 다시 마지막 수만 제외하고 10으로 바꾸고 나서 합산시켰는데,
이 생각은 4+n 의 값이 10+n 이라는 생각에 사용한 방법이다. 이번에도 타이핑 하기 보다는 손공책에 적는 과정이 많았다.
제출 후 생각이 든 커다란 오점은 40이 되면 어떻게 할 것 인가? 였다. "400이되면 4000이 되면..?" 이것에 대한 정의가 필요하다는 것을 깨달았다.
지금 생각하기로는 3,3,3,3 = 12 인데 이걸 다시 진수로 바꾸면 4+4+4+4 가 되고 이걸 합산 하는 과정에서 4가 여러개 접하는 순간에 '10의 n승으로 규칙을 잡을 수 있을까 ...?' 하고서 구상을 해보다가 돌아갈 시간이 되어 마무리하고 돌아왔다.
마지막 로직은 StringBuilder 에 3이 발견되면 4로 바꾸어서 리턴시키는 로직이다. 최종 합산값만 고려한 StringBuilder 사용이기에 조금 더 짜보고 윤곽을 잡아보려고 한다.
생각보다 나누기가 많이 사용된다고 느끼고 연산과정을 줄여주는 것 같다고 느껴서, 일단 그 방향으로 로직을 짜보고 다른 것을 사용해봐야겠다고 생각이 드는 중이다.
더 도전하고 부딪쳐봐야 하나라도 더 구체적으로 짜내려갈 수 있을 듯 하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package programmers_124나라의숫자;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class subClass {
public String solution(int n) {
String answer = "";
int check = 0;
//124 진법 , 자연수만 존재 모든 수를 1,2,4 로 표현
List<Integer> list = new ArrayList<Integer>();
int a =0;
int b = 0;
//1,2,3 으로 나눌 수 있을지
int sum =0;
if(n>=3) {
if(n%3 ==0) {for(int i=0; i<n/3;i++) {list.add(4);}
}else if(n%3 != 0) {a = n/3; b = n%3;
for(int i=0; i<a;i++) {list.add(4);}
if(b%2 ==0) {for(int i=0; i<b/2;i++) {sum+=2;break;}}
else if(b%1 ==0) {for(int i=0; i<b/1;i++) {sum += 1;;break;}}
}
}else {// 3보다 작다면
if(n%2 ==0) {for(int i=0; i<n/2;i++) {list.add(2);break;}}
else if(n%1 ==0) {for(int i =0; i<n/1;i++) {list.add(1);break;}}
}
for(int i=0; i<sum/4; i++) {
list.add(4);
}if(sum%4 != 0) {list.add(sum%4);}
System.out.println(list.toString());// 여기까지 List에 1,2,4 진수 대입
if(list.size()>1) {
for(int i=0 ; i<list.size()-1;i++) {//<
if(list.get(i).intValue() ==4) {list.set(i, 10);}// 10으로 바꾼다.// 마지막 수일떄<<<여기서 확인 봐야함
check += list.get(i);
}check += list.get(list.size()-1);
}else {check += list.get(0);}
answer = String.valueOf(check);
StringBuilder sb = new StringBuilder(answer);
for(int i=0; i<answer.length();i++) {
char set = answer.charAt(i);
if(set == '3') {sb.setCharAt(i, '4');}
}
System.out.println(answer);
return answer;
}
}
|
cs |
'자바 초급문제로 맨땅에 해딩하기' 카테고리의 다른 글
자바 Level 2 문제, 5-1. 탑 진행 중. (0) | 2020.05.02 |
---|---|
자바 Level 2 문제, 4. 124 나라의 숫자 완성 (0) | 2020.04.30 |
자바 Level 2 문제, 4-1. 124 나라의 숫자 진행 중. (0) | 2020.04.28 |
자바 Level 2 문제, 3. 기능개발 진행 완성 (0) | 2020.04.24 |
자바 Level 2 문제, 3-2. 기능개발 진행 3일차 (0) | 2020.04.23 |