• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

23.12.16 00:28 작성 조회수 192

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 인턴님의 프로필

인프런 AI 인턴

2023.12.18

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

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

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

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

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

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

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