이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.
문제 설명
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static String solution(int n, String message) {
StringBuilder sb = new StringBuilder();
String binary; // 변환된 전체 이진수 문자열을 저장할 변수
String[] binaryCharArr = new String[n]; // 7비트 단위의 이진수 문자열을 저장할 배열
int idx = 0; // 배열의 인덱스를 관리할 변수
// 메시지에서 양 끝 공백을 제거한 후, #을 1로, *을 0으로 변환하여 sb에 추가
sb.append(message.trim().replace('#', '1').replace('*', '0'));
// 변환된 이진수 문자열을 binary 변수에 저장
binary = sb.toString();
sb = new StringBuilder(); // sb 초기화하여 이후 변환된 문자를 저장하는 데 사용
// 이진수 문자열을 7비트 단위로 나누어 문자로 변환
for(int i = 0; i < binary.length(); i += 7){
// 7비트 단위로 잘라서 배열에 저장
binaryCharArr[idx++] = binary.substring(i, i + 7);
// 2진수 문자열을 정수로 변환하고 다시 문자로 변환하여 sb에 추가
sb.append((char) Integer.parseInt(binaryCharArr[idx - 1], 2));
}
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 message = br.readLine();
System.out.println(solution(N, message));
}
}
설명
- 코드 주석 참고
'자료구조 & 알고리즘 > Inflearn' 카테고리의 다른 글
[인프런 알고리즘] Chpater 2, 2번 문제(보이는 학생) (0) | 2024.07.12 |
---|---|
[인프런 알고리즘] Chpater 2, 1번 문제(큰 수 출력하기) (0) | 2024.07.12 |
[인프런 알고리즘] Chapter 1, 11번 문제(문자열 압축) (0) | 2024.07.10 |
[인프런 알고리즘] Chapter 1, 10번 문제(가장 짧은 문자거리) (0) | 2024.07.09 |
[인프런 알고리즘] Chapter 1, 9번 문제(숫자만 추출) (0) | 2024.07.08 |