Problem
문자열을 그룹으로 나누어서 {갯수}{숫자}{갯수}{숫자}
형식의 문자열로 다시 만들면 됩니다.
Solution
1 만 고정된 문자열을 리턴하기 때문에 무조건 1 까지 갔다 와야 합니다.
재귀를 이용해서 n-1
의 문자열 값을 구하고 다시 계산해서 리턴합니다.
같은 숫자여도 구간이 다르면 카운트를 따로 해야 하기 때문에 HashMap
에 담으면 안되고 직접 비교하면서 세야 합니다.
Java Code
class Solution {
public String countAndSay(int n) {
if (n == 1) return "1";
StringBuilder sb = new StringBuilder();
String s = countAndSay(n - 1);
char value = s.charAt(0);
int count = 1;
for (int i = 1; i < s.length(); i++) {
char c = s.charAt(i);
if (value == c) {
count++;
continue;
}
sb.append(Integer.toString(count)).append(value);
value = c;
count = 1;
}
sb.append(Integer.toString(count)).sb.append(value);
return sb.toString();
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Medium] House Robber (Java) (0) | 2020.12.28 |
---|---|
[LeetCode Easy] Plus One (Java) (0) | 2020.12.28 |
[LeetCode Easy] Min Stack (Java) (0) | 2020.12.28 |
[LeetCode Easy] Remove Duplicates from Sorted Array (Java) (1) | 2020.12.28 |
[LeetCode Easy] Two Sum (Java, Kotlin) (2) | 2020.12.28 |