hwooo
LeetCode (C/C++, Java) 299. Bulls and Cows 본문
https://leetcode.com/problems/bulls-and-cows/description/


풀이
주어진 문자열을 탐색하며 bulls를 찾는다. 이 때 bulls 위치를 기록하며 아닌 자리의 숫자들의 개수를 센다.
한 번 더 탐색하며 bulls 자리는 넘어가고, secret에 있는 숫자이면 해당 숫자의 개수를 줄여주며 cows의 개수를 파악한다.
C/C++ 코드
class Solution {
public:
string getHint(string secret, string guess) {
int A = 0, B = 0;
bool bulls[1000];
int cnt[10] = {0, };
for (int i = 0; i < secret.size(); i++) {
if (secret[i] == guess[i]) {
A++;
bulls[i] = true;
}
else
cnt[secret[i] - '0']++;
}
for (int i = 0; i < secret.size(); i++) {
if (bulls[i]) continue;
int now = guess[i] - '0';
if (cnt[now] > 0) {
cnt[now]--;
B++;
}
}
return to_string(A) + "A" + to_string(B) + "B";
}
};
Java 코드
class Solution {
public String getHint(String secret, String guess) {
int[] cnt = new int[10];
boolean[] locationA = new boolean[secret.length()];
int countA = 0;
for (int i = 0; i < secret.length(); i++) {
if (secret.charAt(i) == guess.charAt(i)) {
countA++;
locationA[i] = true;
}
else cnt[secret.charAt(i) - '0']++;
}
int countB = 0;
for (int i = 0; i < guess.length(); i++) {
if (!locationA[i] && 0 < cnt[guess.charAt(i) - '0']) {
cnt[guess.charAt(i) - '0']--;
countB++;
}
}
StringBuilder sb = new StringBuilder();
sb.append(Integer.toString(countA)).append("A").append(Integer.toString(countB)).append("B");
return sb.toString();
}
}
'Study > Algorithm' 카테고리의 다른 글
LeetCode (C/C++, Java) 785. Is Graph Bipartite? (0) | 2025.01.20 |
---|---|
BOJ (C/C++, Java) 1647번: 도시 분할 계획 (0) | 2025.01.20 |
프로그래머스 (C/C++, Java) 68936 : 쿼드압축 후 개수 세기 (0) | 2025.01.15 |
BOJ (C/C++, Java) 10159번: 저울 (0) | 2025.01.14 |
프로그래머스 (C/C++, Java) 77486 : 다단계 칫솔 판매 (0) | 2025.01.13 |