개발놀이터
1-12. 2진 암호 본문
package string.SecureNumber112.my;
import java.util.Scanner;
public class Main {
/**
* -내 풀이-
* 입력 받은 문자열을 replace 를 이용해 1 과 0 으로 이루어진 문자열로 바꾸는데 성공 했다
* 그리고 7개 단위로 끊어서 나열하는 것까지도 성공했다.
* 하지만 10진수를 2진수로 바꾸는 것을 몰라서 그리고 2진수를 아스키코드로 다시 바꾸는 것도 몰라서
* 결국 구글링으로 해결했음
*
* -선생님 풀이-
* 1. 문자열을 0부터 7까지 substring 을 이용해 자른다
* 2. replace 메서드를 이용해 # 은 1 로 * 은 0 으로 바꾼다.
* 3. Integer 클래스에 parseInt 로 2진수 -> 10진수로 바꾼다. Integer.parseInt(tmp, 2); // 중요! 2진수 -> 10진수
* 4. char 로 캐스팅해서 문자로 만든다. // 중요! 아스키코드 -> 문자
* 5. 문자를 answer 에 붙인다.
* 6. 자른만큼 버린다 substring(7)
*/
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
String input = kb.next();
System.out.println(solution(input, n));
}
private static String solution(String input, int n) {
String answer = "";
String tmp = "";
for (int i = 0; i < input.length() ; i++) {
if (i % 7 == 0) {
for (int j = i; j < i + 7 ; j++) {
tmp += input.charAt(j);
}
String binaryString = tmp.replace('#', '1').replace('*', '0');
int binary = Integer.valueOf(binaryString, 2);
char binaryCharacter = (char) binary;
answer += binaryCharacter;
tmp = "";
}
}
return answer;
}
}
package string.SecureNumber112.teacher;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
String str = kb.next();
System.out.println(solution(n, str));
}
private static String solution(int n, String s) {
String answer = "";
for (int i = 0; i < n; i++) {
String tmp = s.substring(0, 7).replace('#', '1').replace('*', '0');
int num = Integer.parseInt(tmp, 2);
answer += (char) num;
s = s.substring(7);
}
return answer;
}
}
'기타 > 코딩테스트' 카테고리의 다른 글
2-2. 보이는 학생 (0) | 2023.02.14 |
---|---|
1장 문자열 주요 개념 복습 노트 (0) | 2023.02.09 |
1-11. 문자열 압축 (0) | 2023.02.09 |
1-10. 가장 짧은 문자 거리 (0) | 2023.02.09 |
1-9. 숫자만 추출 (0) | 2023.02.09 |