import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public String solution(int n, String s) {
String answer ="";
for (int i = 0; i < n; i++) { //n개의 문자가 만들어져야함
String tmp = s.substring(0,7).replace('#', '1').replace('*','0'); //0~7번인덱스까지 분리해서 대체
int num = Integer.parseInt(tmp, 2);
answer += (char)num;
// System.out.println(tmp+ " "+num);
s=s.substring(7); //이 코드가 없으면 앞의 7글자만 계속 출력 됨
//s가 7~끝으로 바뀜
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
String str = kb.next();
System.out.println(T.solution(n,str));
}
}
다른 풀이
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public String solution(int cnt, String str) {
String answer ="";
String password = "";
char[] chArray = str.toCharArray();
for(int i=0; i<chArray.length; i++){
password += String.valueOf(chArray[i])
.replace('#', '1')
.replace('*', '0'); // #를 1로, *를 0으로 변환
// str의 길이는 28개 문자고, cnt는 4이므로 7개씩 묶는다는 의미가 된다 (나누는 수 : 7)
if((i % (str.length()/cnt)) == 6){ // password에 쌓은 것이 7개가 되면,
answer += (char)(Integer.parseInt(password,2)); // 2진수를 10진수로 전환해서 문자로 answer에 누적
password = ""; // answer에 누적했으므로 비워주자
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int cnt=kb.nextInt();
String str = kb.next();
System.out.println(T.solution(cnt,str));
}
}
'Algorithm > 문제' 카테고리의 다른 글
14. 보이는 학생 (0) | 2023.05.29 |
---|---|
13. 큰 수 출력하기 (0) | 2023.05.29 |
11. 문자열 압축 (0) | 2023.05.25 |
10. 가장 짧은 문자거리 (0) | 2023.05.24 |
9. 숫자만 추출 (0) | 2023.05.23 |