일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BFS
- 문자열
- Inventory
- Unity3d
- 순열
- Photon
- 스택
- 이분탐색
- Firebase
- 스파르타내일배움캠프TIL
- unityui
- QueryDSL
- 알고리즘
- 언리얼엔진
- FSM
- C++
- 내일배움캠프
- UE4
- Unity2D
- 프로그래머스
- Unity
- 유니티
- c#
- 유클리드호제법
- 스파르타내일배움캠프
- 워크플로
- UnrealEngine
- 포톤
- 해시
- 구현
Archives
- Today
- Total
개발 낙서장
[프로그래머스][JAVA] 숫자 짝꿍 본문
숫자 짝꿍
https://school.programmers.co.kr/learn/courses/30/lessons/131128
풀이 방법
처음엔 단순 문자열이라고 생각해서 두 문자열을 정렬한 다음 짝이 맞는 문자를 StringBuilder에 추가해 결과를 출력해주었다.
근데 런타임 에러가 발생했는데 아마 두 문자열의 자릿수가 최대 300만 자릿수까지여서 메모리 초과?가 일어나는게 아닌가 싶다.
그래서 고민하다 다른 사람의 풀이를 참고해버렸다😥
너무 문자열에 꽂혀서 다른게 생각이 안났었는데 보자마자 바로 깨달았다.
그냥 숫자로 생각해서 배열에 넣고 개수를 카운트해주고 개수대로 출력해주면 되는 아주 간단한 문제였다.
소스 코드
더보기
class Solution {
public String solution(String X, String Y) {
String answer;
StringBuilder sb = new StringBuilder();
int[] x_int = new int[10];
int[] y_int = new int[10];
for(int i = 0; i < X.length(); i++) {
x_int[Character.getNumericValue(X.charAt(i))] += 1;
}
for(int i = 0; i < Y.length(); i++) {
y_int[Character.getNumericValue(Y.charAt(i))] += 1;
}
for(int i = 9; i >= 0; i--) {
for(int j = 0; j < Math.min(x_int[i], y_int[i]); j++) {
sb.append(Integer.toString(i));
}
}
if(sb.length() == 0) {
answer = "-1";
}
else if(sb.charAt(0) == '0') {
answer = "0";
}
else {
answer = sb.toString();
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][JAVA] 둘만의 암호 (0) | 2024.02.02 |
---|---|
[프로그래머스][JAVA] 문자열 나누기 (0) | 2024.01.30 |
[프로그래머스][문자열][JAVA] 옹알이(2) (0) | 2024.01.16 |
[프로그래머스][Java][효율성] 기사단원의 무기 (0) | 2024.01.12 |
[프로그래머스][정렬][JAVA] 과일 장수 (0) | 2024.01.09 |
Comments