아니 처음에 이제 작성을 딱 했는데
다 맞게 한 거 같은데 도대체가 반례가 안찾아졌다..ㅠㅠㅠㅠㅠ
게시판에 있는 반례들 대부분 다 제대로 되는데 왜 안되는 지 모르겠는거..ㅜㅜㅜ
근데 알고봤더니 ㅎㅎ 하나 조건을 == 으로 적어놨었다~~
정답코드
#해법1.
import java.util.*;
public class Test{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String input=sc.nextLine();
int count=0;
for (int i=0; i<input.length(); i++) {
if (i==input.length()-1) {
count++;
} else if (i==input.length()-2) {
if (input.substring(i, i+2).equals("c=") || input.substring(i, i+2).equals("c-") ||
input.substring(i, i+2).equals("d-") ||
input.substring(i, i+2).equals("lj") ||input.substring(i, i+2).equals("nj") ||
input.substring(i, i+2).equals("s=") ||input.substring(i, i+2).equals("z=")) {
count++;
i++;
} else {
count++;
}
} else {
if (input.substring(i, i+2).equals("c=") || input.substring(i, i+2).equals("c-") ||
input.substring(i, i+2).equals("d-") ||
input.substring(i, i+2).equals("lj") ||input.substring(i, i+2).equals("nj") ||
input.substring(i, i+2).equals("s=") ||input.substring(i, i+2).equals("z=")) {
count++;
i++;
} else if (input.substring(i, i+3).equals("dz=") ) {
count++;
i+=2;
} else{
count++;
}
}
}
System.out.println(count);
}
}
하하 저 한 줄 때문에 안돼서 얼마나 애를 먹었는지ㅠㅠㅠ
그리고 또 좋은 방법은 치환을 사용하는 법!!
#해법2.
import java.util.*;
public class Test{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String input=sc.nextLine();
String[] words={"c=","d-","dz=","c-","lj","s=","nj","z="};
for (int i=0; i<words.length; i++) {
if (input.contains(words[i])) {
input=input.replaceAll(words[i], "*");
}
}
System.out.println(input.length());
}
}
코드 길이도 훨씬 짧고 직관적이다!
그리고 이걸 사용할 때 주의점은 dz=가 앞에 있어야함!
왜냐면 dz= 랑 z=가 겹쳐서 z=가 먼저 카운트되면 안되기 때문이다..ㅠㅠ
은근히 복잡하다..!
그리고 아직 배울 점이 많고 사고가 제대로 개발자스럽게(?) 안되는 것 같다. 화이팅 화이팅!
'아기 개발자 > 백준 문제풀이' 카테고리의 다른 글
[BOJ_JAVA] 백준 1712번 : 손익분기점 @달깅 (0) | 2019.11.04 |
---|---|
[BOJ_JAVA] 백준 1316번 : 그룹 단어 체커 @달깅 (0) | 2019.11.04 |
[BOJ_JAVA] 백준 2908번 : 상수 @달깅 (0) | 2019.11.03 |
[BOJ_JAVA] 백준 1152번 : 단어의 개수 @달깅 (0) | 2019.11.03 |
[BOJ_JAVA] 백준 11729번 : 하노이 탑 이동 순서 @달깅 (0) | 2019.11.03 |
댓글