728x90
반응형
문자열 마지막 문제. 여러 가지 꿀팁을 알게 된 것 같아 뿌듯하다. 까먹지 않게 자주자주 복습해주어야겠다.
오늘 배운 것
1. replace('#','1').replace('*','0')
replace는 chain처럼 여러 번 사용 가능하다.
String tmp = str.substring(0,7).replace('#', '1').replace('*', '0');
2. 2진수를 10진수로 바꾸기
Integer.parseInt(i,2)를 사용하면 가능하다. 뒤쪽에는 몇 진수로 들어갔는지 입력해주면 된다.
String tmp = '100';
int num = Integer.parseInt(tmp,2);
System.out.println(num); // 4
3. subString(a, b)
. subString(a) : a ~ 쭉 사용 가능하다. 잘라진 범위 이후를 새로 할당하고 싶을 때 사용
. subString(a, b) : 자르고 싶은 범위 지정 a이상 b미만 잘린다.
String tmp = str.substring(0,7); // 자르고 싶은 문자열 범위 지정
str = str.substring(7); // 잘린 이후의 문자열을 새로 할당
4. 문제 풀이
import java.util.Scanner;
public class Main {
public static String solution(String str,int i){
String answer = "";
str+=" ";
char[] chars = str.toCharArray();
String tmp = "";
for (int j = 0; j < chars.length; j++) {
if(j!=0 && j%7==0){
// 2진수 10진수로 만들기
answer+=twoToTen(tmp);
tmp="";
}
if(chars[j] == '#'){
tmp+='1';
}else{
tmp+='0';
}
}
return answer;
}
public static String solution2(String str,int i){
String answer= "";
for (int j = 0; j < i; j++) {
String tmp = str.substring(0,7).replace('#', '1').replace('*', '0');
char c = (char) Integer.parseInt(tmp,2);
str = str.substring(7);
answer+=c;
}
return answer;
}
// Integer.parseInt(tmp,2) 로 담당일찐 가능
private static char twoToTen(String tmp) {
char[] chars = tmp.toCharArray();
int ans = 0;
int cnt = 0;
for (int i = chars.length-1; i >=0 ; i--) {
if(chars[i]=='1'){
ans += Math.pow(2,cnt);
}
cnt+=1;
}
return (char)ans;
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int i = kb.nextInt();
String str = kb.next();
//System.out.println(solution(str,i));
System.out.println(solution2(str,i));
}
}
느낀 점
문자열 파트 강의를 수강하며 약 15%정도의 진도를 진행하였다. 5일차에 15강 수강을 했는데, 하루 평균 2강의~3강의 정도 들었다고 보면 될 것 같다.
이 진도로 계속 잘 나갈 수 있다면 좋겠지만, 이게 제일 쉬운 파트니까.. 그래도 하루에 2강의정도는 정리하면서 공부하는 내가 되고싶다.
728x90
반응형
'알고리즘 > 문자열, 정렬' 카테고리의 다른 글
[알고리즘] 큰 수 출력하기 with Java (0) | 2022.03.01 |
---|---|
[알고리즘] 문자열 총 정리 with Java (0) | 2022.02.28 |
[알고리즘] 문자열 압축 with Java, 문자열에 빈 문자 하나 더해주기 (0) | 2022.02.27 |
[알고리즘] 가장 짧은 문자거리 with Java, 거리 구하는 것에 대한 생각 (0) | 2022.02.27 |
[알고리즘] 숫자만 추출 with Java, isDigit() (0) | 2022.02.27 |