[백준] 2941 - 크로아티아 알파벳
2020. 9. 10. 13:06ㆍ알고리즘/Baekjoon
728x90
#String #StartsWith #substring
문제 풀이
배열과 반복문으론 풀 수 없었던 문제. 풀이를 보고서야 String 메서드 StartsWith을 사용해야함을 알 수 있었다. 문자열이 입력한 문자로 시작하면 true를 반환하는 boolean 타입 메서드다. 로직은 true로 반환됐을 때 substring으로 문자열을 잘라주었고, false의 경우 1글자만 substring으로 잘라줬다. 크로아티아 글자 수 count 변수 croCnt엔 한 번 돌 때마다 ++ 해줬다.
중첩 반복문을 사용했다. 처음엔 for문 2개를 썼지만 code의 길이가 일정하지 않기 때문에 조건을 넣을 수 있는 while문에 code.length > 0 을 stop 조건으로 뒀다.
기억하자
substring 했을 때 시작 index는 0이다.
++과 + 1은 엄연히 다르다.
package baekJoon.week7;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CroatiaAlpha_2941_ex {
static String code;
static String[] croAlphas;
static int croCnt = 0;
static int codeIdx = 0;
static boolean flag;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
code = br.readLine();
croAlphas = new String[]{"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
while (codeIdx < code.length()) {
flag = false;
for (int j = 0; j < croAlphas.length; j++) {
if (code.startsWith(croAlphas[j])) {
croCnt++;
flag = true;
code = code.substring(codeIdx + croAlphas[j].length(), code.length());
break;
}
}
if (!flag) {
croCnt++;
code = code.substring(codeIdx + 1 , code.length());
}
}
System.out.println(croCnt);
}
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 2775 - 부녀회장이 될테야 (0) | 2020.09.18 |
---|---|
[백준] 2292 - 벌집 (0) | 2020.09.14 |
[백준] 1316 - 그룹 단어 체커 (0) | 2020.09.09 |
[백준] 11654 - 아스키 코드 변환 (0) | 2020.09.02 |
[백준] 1065 - 한수 (0) | 2020.09.01 |