알고리즘 - 문자열 문제 : 암호

2023. 3. 8. 14:52·알고리즘

문제

암호는 # 과 *로 이루어져 있으며, #은 이진수의 1로, *은 이진수의 0으로 변환하여 해석해주세요

알파벳 한 문자마다 #또는 *이 일곱개로 구성되어 있습니다.

입력

4
#****###**#####**#####**##**

출력

COOL

풀이

나의 답 -틀림

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Scanner in = new Scanner(System.in);
        int cnt = in.nextInt();
        String str = in.next();
        System.out.print(main.solution(cnt, str));
        return;
    }

    public String solution(int cnt, String str) {
        String answer = "";
        for(int i=0;i<cnt;i++){
            String alpha = "";
            String word = str.substring(i*7,i*7+7);
            for(char c : word.toCharArray()) {
                if(c==35) alpha += "1";
                else alpha += "0";
                int a = Integer.parseInt(alpha, 2);
                char b = (char)a;
                answer += String.valueOf(b);
            }

        }

        return answer;
    }
}

풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Scanner in = new Scanner(System.in);
        int cnt = in.nextInt();
        String str = in.next();
        System.out.print(main.solution(cnt, str));
        return;
    }

    public String solution(int cnt, String str) {
        String answer = "";
        for(int i=0;i<cnt;i++){
            String word = str.substring(0, 7)
                    .replace('#', '1')
                    .replace('*', '0');
            int num = Integer.parseInt(word, 2);
            answer += (char)num;
            str = str.substring(7);
            }

        return answer;
    }
}

나는 replace를 사용하지 않았기 때문에 코드가 어지럽게 나온 경향이 있고, 풀이는 replace와 substring함수를 적절하게 사용함으로서 코드의 가독성이 굉장히 좋아졌다.

String.substring(int i) : 인덱스 0부터 i-1 까지 문자열을 잘라없애서 리턴시켜준다.

String.substring(int i, int n) : String의 인덱스 i 부터 n-1까지 자른 값을 리턴시켜 준다.

 

 

참고

이 글은 인프런 강의 김태원님의

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비를 바탕으로 쓴 글입니다.

https://www.inflearn.com/course/자바-알고리즘-문제풀이-코테대비

반응형
저작자표시 (새창열림)
'알고리즘' 카테고리의 다른 글
  • 1157번 : 단어공부 - JAVA
  • 문자열 - 회문 문자열
  • 자료구조란?
  • 특정 문자 뒤집기
LightSource
LightSource
어제보단 발전한 오늘의 나를 위한 블로그
    반응형
  • LightSource
    LightSourceCoder
    LightSource
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • Git (4)
      • Language (6)
        • Java (6)
      • Back-End (63)
        • Spring Boot (4)
        • MyBatis (1)
        • Oracle (1)
        • PL SQL (3)
        • JPA (26)
        • Spring Data JPA (5)
        • Spring MVC (8)
        • Spring (12)
        • Spring Security (2)
        • Redis (1)
      • Front-End (38)
        • 아이오닉 (2)
        • JSP (7)
        • JavaScript (4)
        • React (16)
        • TypeScript (3)
        • Angular (6)
      • AWS (1)
      • CI & CD (1)
      • 개발지식 (13)
        • 네트워크 (9)
        • CS 지식 (4)
      • 데이터모델링 (2)
      • Tool (1)
      • 프로젝트 (5)
      • 독후감 (2)
      • 잡생각 (0)
      • 면접 준비 (1)
      • 알고리즘 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배요소열추가
    배열요소수정
    배열요소삭제
    리액트
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
LightSource
알고리즘 - 문자열 문제 : 암호
상단으로

티스토리툴바