728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/01-12
- 문제 설명 : 암호문을 이진수로 변환하고 그 이진수를 문자로 변환하는 문제
- 문자열의 문자 '#'은 이진수 1로 문자 '*'은 이진수 0으로 변환
- 변환된 문자열을 7자리씩 잘라서 하나의 2진수로사용
- 각각 2진수를 문자로 변환하여 최종적으로 문자열을 반환한다.
입출력 예시
입력 예시
4
#****###**#####**#####**##**
출력 예시
COOL
내 풀이
- 2진수 -> 10진수 : Integer.parseInt(문자열, 진법)
- subString(), replace() 메서드 사용
public class Main1_12 {
public static String solution(int n, String s) {
StringBuilder sb = new StringBuilder();
String binary = s.replace("#", "1").replace("*", "0");
for (int i = 0; i < n; i++) {
char c = (char) Integer.parseInt(binary.substring(i*7, i*7+7), 2);
sb.append(c);
}
return sb.toString();
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String s = br.readLine();
System.out.println(solution(n, s));
}
}
강의 풀이
- 내 풀이와 같은 방식으로 풀이
import java.util.*;
class Main {
public 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;
}
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));
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘/인프런] 2-2 보이는 학생(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.11 |
---|---|
[알고리즘/인프런] 2-1 큰 수 출력하기(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.10 |
[알고리즘/인프런]1-11 문자열 압축(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.09 |
[알고리즘/인프런]1-10 가장 짧은 문자거리(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.09 |
[알고리즘/인프런]1-9 숫자만 추출(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.06 |
댓글