[Programmers] 181925번 - 수 조작하기 2 [Java][C++]
[Programmers] 181925번 - 수 조작하기 2 [Java][C++]
1. 아이디어
인접한 두 로그값의 차이는 항상 +1, -1, +10, -10 중 하나다. 그 차이를 보고 각각 w, s, d, a로 되돌려 조작 기록 문자열을 복원해줬다.
2. 복잡도
| 시간복잡도 | 공간복잡도 |
|---|---|
| $O(N)$ | $O(1)$ |
$N$ =
numLog길이
3. 코드
풀이 [Java][C++]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public String solution(int[] numLog) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i < numLog.length; i++) {
if (numLog[i] == numLog[i - 1] + 1) {
sb.append("w");
} else if (numLog[i] == numLog[i - 1] - 1) {
sb.append("s");
} else if (numLog[i] == numLog[i - 1] + 10) {
sb.append("d");
} else {
sb.append("a");
}
}
return sb.toString();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <vector>
using namespace std;
string solution(vector<int> numLog) {
string ans;
for (int i = 1; i < numLog.size(); i++) {
if (numLog[i] == numLog[i - 1] + 1) {
ans += "w";
} else if (numLog[i] == numLog[i - 1] - 1) {
ans += "s";
} else if (numLog[i] == numLog[i - 1] + 10) {
ans += "d";
} else {
ans += "a";
}
}
return ans;
}
This post is licensed under CC BY 4.0 by the author.