일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스
- Firebase
- unityui
- Unity3d
- Unity2D
- 워크플로
- 알고리즘
- BFS
- c#
- 언리얼엔진
- 문자열
- 유클리드호제법
- Unity
- FSM
- UE4
- 해시
- 이분탐색
- 스택
- QueryDSL
- 순열
- 구현
- UnrealEngine
- C++
- 스파르타내일배움캠프TIL
- 포톤
- Photon
- 스파르타내일배움캠프
- 내일배움캠프
- 유니티
- Inventory
Archives
- Today
- Total
개발 낙서장
[프로그래머스][JAVA] 숫자 짝꿍 본문
숫자 짝꿍
https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 방법
처음엔 단순 문자열이라고 생각해서 두 문자열을 정렬한 다음 짝이 맞는 문자를 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