인프런 커뮤니티 질문&답변

이선로님의 프로필 이미지
이선로

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

12. 암호(replace(), parseInt(string, 2))

RunTimeError가 발생하는 이유를 알려주세요..

작성

·

281

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요

import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int cnt = sc.nextInt();
        String pw = sc.next();
        pw = pw.replaceAll("#","1").replaceAll("/*","0");
        String answer = "";

        for(int i=0 ; i<cnt*7 ; i+=7){
            char target =(char)Integer.parseInt(pw.substring(i,i+7),2);
            answer +=target;
        }
        System.out.println("answer = " + answer);
    }

    }

콘솔창 :

IntellJ에서는 직접 값을 입력하면 잘 뜨는데 강사님의 채점 프로그램에서는 작동하지 않습니다...

뭐가 문제일까요

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

코드를 살펴보았을 때, 코드 자체에 문제가 있어 보이진 않습니다. 하지만 IntellJ에서 잘 작동하고 강사님의 채점 프로그램에서 작동하지 않는 경우, 몇 가지 가능한 원인이 있을 수 있습니다:

  1. 입력 형식이 채점 프로그램의 기대와 다를 경우
  2. 정규 표현식의 사용 문제로, replaceAll("/*","0") 부분이 올바르게 해석되지 않을 경우 (여기서 "/*" 가 아닌 "\\*"을 사용하셔야 합니다)
  3. 환경 차이로 인한 인코딩 문제
  4. 채점 프로그램에서 예상치 못한 내부 오류

특히 정규 표현식에서 “” 문자는 특수 문자로, “0 또는 더 많은 어느 것과도 일치”라는 의미를 가지므로, 문자 그대로의 ““를 대체하고 싶으시면 escape 문자를 사용하여 "\\*"로 변경해야 합니다.

따라서, 다음과 같이 코드를 수정해보세요:

pw = pw.replaceAll("#","1").replaceAll("\\*","0");

그래도 문제가 해결되지 않는다면, 강사님의 채점 프로그램의 특정 요구 사항이 있을 수 있으니 강의의 커뮤니티 질문&답변 게시판에 질문하여 강사님의 도움을 받으시는 것을 추천드립니다.

이선로님의 프로필 이미지
이선로

작성한 질문수

질문하기