반응형
👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
오늘의 문제
문제 고민
예시 1번을 먼저 풀어보자
KK -> 2번
H -> 1번
SSSSSS -> 7번
E -> 1번
String 문자를 배열로 처리한 뒤 검사한다
count 처리할 변수도 필요하다
1 은 그냥 출력하고 카운팅이 2 이상부터는 숫자로 한다
출력시 문자와 숫자를 같이 출력해야 한다
첫 시도 했을 때 숫자만 찍어보았다.
예시 1번으로 했을 때 2 / 1 / 7 이 찍혔다
문자를 같이 출력했을 때
K2H2S8 이 나왔다
답은 K2HS7E 이어야 하는데 H와 E 가 빠졌고 , S 카운팅 또한 8로 나와 이상했다.
2차 시도 시 정확하게 나오긴 했으나 예시 2번 문제에 끝 G2까지 찍히지 않았다. if 문을 다시 수정해야 했고
다시 풀어보았다
결론은 성공!
다른 방식으로 또 풀어봐야겠다
나의 풀이
package Chapter_List;
import java.util.Scanner;
public class chapter_11 {
public void solution(String str) {
int cnt = 1;
for (int i = 0; i < str.length(); i++) {
if ( i+1 < str.length() ){
if ( str.charAt(i) == str.charAt(i+1)) cnt++;
else if ( str.charAt(i) != str.charAt(i+1) && cnt > 1) {
System.out.print( str.charAt(i) + "" + cnt );
cnt = 1;
} else if ( str.charAt(i) != str.charAt(i+1) && cnt < 2) System.out.print(str.charAt(i));
} else if ( i+1 == str.length() ){
if (str.charAt(i-1) == str.charAt(i)) System.out.print(str.charAt(i) +""+cnt);
else System.out.print(str.charAt(i));
}
}
}
public static void main(String[] args) {
chapter_11 T = new chapter_11();
Scanner in = new Scanner(System.in);
String str = in.nextLine();
T.solution(str);
}
}
정답은 맞지만.
문제난이도에 비해 너무 시간복잡도가 올라가 보였다.
쌤의 문제 풀이를 보고
무릎을 탁! 치게되었다
이렇게 간단히 풀다니.
쌤의 풀이
package Chapter_List;
import java.util.Scanner;
public class chapter_11 {
public String solution(String str) {
String answer = "";
str += str+" ";
int cnt = 1;
for (int i = 0; i < str.length()-1; i++) {
if (str.charAt(i)== str.charAt(i+1)) cnt++;
else {
answer+=str.charAt(i);
if (cnt > 1) answer+=String.valueOf(cnt);
cnt=1;
}
}
return answer;
}
public static void main(String[] args) {
chapter_11 T = new chapter_11();
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(T.solution(str));
}
}
반응형
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Aʟɢᴏʀɪᴛʜᴍ' 카테고리의 다른 글
Algorithm - 암호 (0) | 2023.11.07 |
---|---|
Algorithm - 문자 거리 (1) | 2023.11.01 |
Algorithm - 숫자만 추출 (1) | 2023.10.20 |
Algorithm - 유효한 팰린드룸 (0) | 2023.10.18 |
Algorithm - 회문 문자열 (0) | 2023.10.18 |