알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Think🤔
import java.lang.Math;
class Solution {
public String solution(String X, String Y) {
// x , y 랑 둘 중 작은거로 반복문 돌림
// 작은거를 내림차순으로 정렬 그거 리턴
// 내림차순으로 정렬했을때 제일 큰 수 0일 경우 0으로 리턴
// 같은 수 없을 경우 -1
String answer = "";
X = change(X);
Y = change(Y);
if(X.charAt(0) == '0' || Y.charAt(0) == '0'){return "0";}
String big = (X.length() >= Y.length() ? X : Y);
String small = (X.length() >= Y.length() ? Y : X);
char tmp = ' ';
for(int i=0; i<small.length(); i++){
if(big.indexOf(small.charAt(i)) != -1){
answer+=small.charAt(i);
big = big.substring(0, big.indexOf(small.charAt(i))) + big.indexOf(big.indexOf(small.charAt(i)), big.length() -1);
}
}
if(answer.length() == 0){
answer = "-1";
}
return answer;
}
public String change(String str){
char[] ch = str.toCharArray();
char temp = ' ';
for(int i=0; i<str.length(); i++){
for(int j=i+1; j<str.length()-1; j++){
if(ch[i] < ch[j]){
temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}
}
str = new String(ch, 0, ch.length);
return str;
}
}
change를 이용해서 내림차순으로 배치한 후
같은게 있으면 제거하고 answer++ 하는 방식으로 했으나 틀림..
Solution✍
class Solution {
public String solution(String X, String Y) {
// String으로 하면 시간 초과
StringBuilder answer = new StringBuilder();
int[] xArr = new int[10];
int[] yArr = new int[10];
for(String tmp : X.split("")){
xArr[Integer.parseInt(tmp)]++;
}
for(String tmp : Y.split("")){
yArr[Integer.parseInt(tmp)]++;
}
for(int i=9; i>=0; i--){
if(xArr[i] > 0 && yArr[i] > 0){
for(int j=0; j<Math.min(xArr[i],yArr[i]); j++){
answer.append(i);
}
}
}
if(answer.length() == 0){return "-1";}
else if(answer.charAt(0) == '0'){return "0";}
return answer.toString();
}
}
Review🤩
동적인 문자열을 다룰때 StringBuilder를 사용하는것이 효과적 String으로 해서 통과하지 못함
배열 길이 이용해서 구하므로 내림차순을 할 필요 없음
'Algorithm' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 (0) | 2023.10.23 |
---|---|
[프로그래머스] 문자열 나누기 (0) | 2023.10.20 |
[프로그래머스] 옹알이2 (0) | 2023.10.17 |
[프로그래머스] 코딩테스트 연습연습문제덧칠하기 (1) | 2023.10.17 |
[프로그래머스] 코딩테스트 연습연습문제기사단원의 무기 (2) | 2023.10.16 |