57. 숫자 짝꿍
class Solution {
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
int[] x = new int[10];
int[] y = new int[10];
for(String str : X.split("")){
x[Integer.parseInt(str)]++;
}
for(String str : Y.split("")){
y[Integer.parseInt(str)]++;
}
for(int i=9; i>=0; i--){
if(x[i] > 0 && y[i] > 0){
int num = Math.min(x[i], y[i]);
for(int j=0; j<num; j++){
answer.append(i);
}
}
}
if((answer.toString()).equals("")){
return "-1";
} else if(answer.toString().charAt(0)==48){
return "0";
}
return answer.toString();
}
}
<작성한 코드>
X, Y에 해당하는 10자리의 정수형 배열을 만들었다. 정수형 배열이니 각 0으로 초기화가 될 것이다. 그 뒤 forEach문을 사용해서 X를 공백 없이 나눠서 그 값을 정수형으로 바꿔준 뒤 x의 해당하는 인덱스를 찾아 1을 더해줬다. Y도 마찬가지로 해주었다. 이렇게 되면 배열 x, y의 해당되는 숫자에 카운트가 올라가 있을 것이다. 큰 수부터 나열을 해야 하기 때문에 세 번째 for문에서는 i는 9부터 1씩 빼면서 반복해 줬고 x [i]와 y [i]가 둘 다 0보다 작을 때 반복문을 하나 실행시켰다. 정수형 변수 num에 x [i], y [i] 중 작은 값을 넣고 j는 0부터 num이전까지 반복해 줬다. answer.append(i)를 사용해서 넣어줬다. 그 뒤 조건을 비교하였다. 만약 answer이 아무 문자열이 들어가 있지 않다면 -1을 반환하고, charAt(0)을 사용해서 answer의 첫 번째 문자를 가져오는데 이게 아스키코드 48, 즉 0이면 0을 반환한다. 아니라면 answer.toString()을 반환했다.
58. 삼총사
class Solution {
public int solution(int[] number) {
int answer = 0;
for(int i=0; i<number.length-2; i++){
for(int j=i+1; j<number.length-1; j++){
for(int k=j+1; k<number.length; k++){
if(number[i] + number[j] + number[k] == 0){
answer++;
}
}
}
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. 세 가지의 수를 비교해야 하니 i, j, k를 만들어주고 i는 0부터, j는 i보다 1 큰 수부터, k는 j보다 1 큰 수부터로 지정해 주고 범위는 i가 마지막으로 비교할 뒤에서 2번째 수까지, j는 1번째 수까지, k는 마지막수까지 비교해 주도록 하였다. 그 뒤 if문을 사용해서 세 가지 숫자의 합이 0이면 answer을 1씩 더해줬다. 그 뒤 answer을 반환하였다.
59. 콜라 문제
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
int remain = 0;
int newCola = 0;
while(true){
if(n<a){
break;
}
newCola = b * (n/a);
remain = n % a;
answer += newCola;
n = newCola + remain;
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. 남은병의 개수로 사용할 변수 remain, 마신콜라의 개수로 사용할 변수 newCola를 선언해 주고 while문을 실행했다. if문을 사용해서 n이 a보다 작으면 while문을 종료하도록 했다. 받은 콜라는 b * (n/a)로 구해줬고, 남은 병은 n에서 a를 나눈 값의 나머지로 저장해 줬다. 답을 구하기 위해 answer에 받은 콜라의 개수를 더해주고 n에는 받은 콜라+남은 병을 더해서 while문을 조건과 일치하지 않을 때까지 계속 반복해 줬다. 그 뒤 answer을 반환했다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
남건욱's 공부기록