๋ฌธ์
<๋ฌธ์ ์ค๋ช >
์ซ์ ์ผ๊ตฌ ๊ฒ์์ด๋ 2๋ช ์ด ์๋ก๊ฐ ์๊ฐํ ์ซ์๋ฅผ ๋ง์ถ๋ ๊ฒ์์ ๋๋ค. ๊ฒ์ํด๋ณด๊ธฐ
๊ฐ์ ์๋ก ๋ค๋ฅธ 1~9๊น์ง 3์๋ฆฌ ์์์ ์ซ์๋ฅผ ์ ํ ๋ค ์๋ก์๊ฒ 3์๋ฆฌ์ ์ซ์๋ฅผ ๋ถ๋ฌ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก ์๋๊ฐ ์ ํ ์ซ์๋ฅผ ์์ํ ๋ค ๋งํ๋๋ค.
- ์ซ์๋ ๋ง์ง๋ง, ์์น๊ฐ ํ๋ ธ์ ๋๋ ๋ณผ
- ์ซ์์ ์์น๊ฐ ๋ชจ๋ ๋ง์ ๋๋ ์คํธ๋ผ์ดํฌ
- ์ซ์์ ์์น๊ฐ ๋ชจ๋ ํ๋ ธ์ ๋๋ ์์
์๋ฅผ ๋ค์ด, ์๋์ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด
- A : 123 B : 1์คํธ๋ผ์ดํฌ 1๋ณผ.
- A : 356 B : 1์คํธ๋ผ์ดํฌ 0๋ณผ.
- A : 327 B : 2์คํธ๋ผ์ดํฌ 0๋ณผ.
- A : 489 B : 0์คํธ๋ผ์ดํฌ 1๋ณผ.
์ด๋ ๊ฐ๋ฅํ ๋ต์ 324์ 328 ๋ ๊ฐ์ง์ ๋๋ค.
์ง๋ฌธํ ์ธ ์๋ฆฌ์ ์, ์คํธ๋ผ์ดํฌ์ ์, ๋ณผ์ ์๋ฅผ ๋ด์ 2์ฐจ์ ๋ฐฐ์ด baseball์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ๋ฅํ ๋ต์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
<์ ํ์ฌํญ>
- ์ง๋ฌธ์ ์๋ 1 ์ด์ 100 ์ดํ์ ์์ฐ์์ ๋๋ค.
- baseball์ ๊ฐ ํ์ [์ธ ์๋ฆฌ์ ์, ์คํธ๋ผ์ดํฌ์ ์, ๋ณผ์ ์] ๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
https://programmers.co.kr/learn/courses/30/lessons/42841
๋ฌธ์ ํ์ด
์์ ํ์ ๋ฌธ์ ์ธ ๋งํผ ๋ชจ๋ ์ ๋ต์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ ๋ คํด ๋ฌธ์ ๋ฅผ ํ์์ต๋๋ค.
1. ์ซ์ ์ผ๊ตฌ์ ์ ๋ต์ด ๋ ์ ์๋ ์๋ฅผ ๋ชจ๋ ์์ฑํด candidate ๋ฒกํฐ์ ์ ์ฅํ๋ค.
2. candidate์ ์์ ์ค ์ฃผ์ด์ง ์ ๋ ฅ์ ๋ถํฉํ์ง ์๋ ๊ฒ์ ์ญ์ ํ๋ค.
1. ์ซ์ ์ผ๊ตฌ์ ์ ๋ต์ด ๋ ์ ์๋ ์๋ฅผ ๋ชจ๋ ์์ฑํด candidate ๋ฒกํฐ์ ์ ์ฅํ๋ค.
1~9๊น์ง์ ์ ์ค ์ค๋ณต ์์ด ์ธ ๊ฐ์ง ์ซ์๋ฅผ ๊ณจ๋ผ ์ ๋ต์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์ ๋ต์ 123 ์ด์ 987 ์ดํ์ ์์ ๋๋ค. ๊ฐ๋ฅํ ๋ชจ๋ ๋ต์ ๋ง๋ค ๋, 0์ด ๋ค์ด๊ฐ๊ฑฐ๋ ๊ฐ์ ์ซ์๊ฐ 2๋ฒ ์ด์ ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๋ ์ ์ธํ์ต๋๋ค.
2. candidate์ ์์ ์ค ์ฃผ์ด์ง ์ ๋ ฅ์ ๋ถํฉํ์ง ์๋ ๊ฒ์ ์ญ์ ํ๋ค.
์์์ ์ n์ด ์ง๋ฌธ์ ๋ถํฉํ๋ ์ ๋ต ํ๋ณด์ธ์ง ํ๋ณํ๋ ํจ์ isCandidate๋ฅผ ์ ์ํ์ต๋๋ค. ๋ณผ๊ณผ ์คํธ๋ผ์ดํฌ์ ๊ฐ์๋ฅผ ์ธ์ ์ ๋ ฅ๊ฐ๊ณผ ๊ฐ๋ค๋ฉด true, ๋ค๋ฅด๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
์ฝ๋ 48~51๋ผ์ธ์์ candidate ์์๋ฅผ ์ญ์ ํ์ง ์์ ๊ฒฝ์ฐ์๋ง j++์ ํด์ค ๊ฒ์ erase ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ญ์ ๋ ๋ฐ์ดํฐ ๋ค์ ๋ฐ์ดํฐ๊ฐ ์๋์ผ๋ก ํ ์นธ์ฉ ์์ผ๋ก ๋น๊ฒจ์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฐธ๊ณ : https://backhugger.tistory.com/45
์์ค์ฝ๋
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
// ์ซ์ ์ผ๊ตฌ
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// n์ด ์ง๋ฌธ์ ๋ง๋ ํ๋ณด์์ธ์ง ํ๋ณํ๋ ํจ์
bool isCandidate(string n, vector<int> question) {
int strike = 0, ball = 0;
string q_num = to_string(question[0]); // ์ง๋ฌธํ ์ธ ์๋ฆฌ์ ์
for (int i = 0; i < 3; i++) {
// ๋ณผ
if (q_num[i] == n[0] || q_num[i] == n[1] || q_num[i] == n[2])
ball++;
// ์คํธ๋ผ์ดํฌ
if (q_num[i] == n[i]) {
strike++;
ball--; // ์คํธ๋ผ์ดํฌ์ผ ๊ฒฝ์ฐ ๋ณผ์ด ์๋๋ฏ๋ก 1์ ๋นผ์ค๋ค.
}
}
// ์ง๋ฌธ์ ์คํธ๋ผ์ดํฌ, ๋ณผ์ ์์ ์ผ์นํ๋์ง ๋ฐํ
return (strike == question[1] && ball == question[2]);
}
int solution(vector<vector<int>> baseball) {
vector<string> candidate; // ๋ต์ด ๋ ์ ์๋ ์๋ฅผ ์ ์ฅํ๋ ๋ฒกํฐ
// ์ซ์ ์ผ๊ตฌ์ ๊ฐ๋ฅํ ๋ชจ๋ ๋ต ๋ง๋ค๊ธฐ
for (int i = 123; i <= 987; i++) {
string s = to_string(i);
// 0์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ ์ ์ธ
if (s[0] == '0' || s[1] == '0' || s[2] == '0')
continue;
// ๊ฐ์ ์ซ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ ์ธ
if (s[0] == s[1] || s[0] == s[2] || s[1] == s[2])
continue;
candidate.push_back(s);
}
for (int i = 0; i < baseball.size(); i++) {
for (int j = 0; j < candidate.size();) {
// ์ง๋ฌธ์ ๋ถํฉํ์ง ์๋ ์ ๋ต ํ๋ณด๋ฅผ ์ ๊ฑฐํ๋ค
if (!isCandidate(candidate[j], baseball[i]))
candidate.erase(candidate.begin() + j);
else
j++;
}
}
// ์ ๋ต ํ๋ณด์ ๊ฐ์ ๋ฐํ
return candidate.size();
}
|
cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ฃผ์๊ฐ๊ฒฉ ํ์ด (0) | 2020.08.04 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์นดํซ ํ์ด (0) | 2020.07.30 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์์ ์ฐพ๊ธฐ ํ์ด (11) | 2020.07.30 |
[ํ๋ก๊ทธ๋๋จธ์ค / c++] ์ด์ค์ฐ์ ์์ํ ํ์ด (0) | 2020.07.29 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋์คํฌ ์ปจํธ๋กค๋ฌ ํ์ด (0) | 2020.07.24 |