문제 3790 · 바이트 V
진열표 코드 정리
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
편의점 직원은 진열표에 적힌 상품 관리 코드를 휴대용 단말기로 읽어 들인다. 단말기는 영문자의 대소문자를 그대로 저장하고, 코드의 구분선 주변을 읽을 때 하이픈을 여러 번 기록하기도 한다. 이렇게 저장한 문자열을 바로 진열표에 인쇄하면 같은 형식의 코드를 서로 다르게 표시할 수 있어, 인쇄 전에 정해진 규칙으로 문자열을 정리하려 한다. 읽어 들인 문자열에는 영문 대문자, 영문 소문자, 숫자, 하이픈만 들어 있다. 먼저 모든 영문 소문자를 대응하는 영문 대문자로 바꾼다. 숫자와 기존 영문 대문자는 그대로 둔다. 그다음 문자열의 맨 앞과 맨 뒤에 있는 하이픈을 모두 제거한다. 마지막으로 문자열 내부에서 하이픈이 두 개 이상 연속한 부분을 각각 하이픈 한 개로 바꾼다. 하나만 있는 내부 하이픈은 그대로 유지한다. 영문자와 숫자의 순서는 바꾸지 않으며, 같은 글자가 연속하더라도 합치거나 제거하지 않는다. 예를 들어 읽어 들인 문자열이 --ab---007-c--이면 정리한 코드는 AB-007-C이다. 숫자 부분의 맨 앞에 있는 0도 코드의 일부이므로 남겨야 한다. 문자열의 양 끝을 제외한 곳에 있는 하이픈은 글자 사이를 구분하는 역할을 하므로 완전히 삭제하지 않는다. 문자열 전체가 하이픈으로만 이루어졌다면 정리한 결과에는 아무 문자도 남지 않는다. 이 경우에는 빈 줄 대신 EMPTY를 출력한다. 그 밖의 경우에는 정리한 코드만 한 줄에 출력한다. 입력 문자열의 길이는 정리하기 전의 문자 수이며, 정리 후의 길이를 별도로 출력하지 않는다. 주어진 규칙에 따른 결과는 항상 하나로 정해지며, 코드의 실제 상품 존재 여부나 중복 등록 여부는 확인하지 않는다.
입력
첫째 줄에 문자열의 길이 N이 주어진다. N은 1 이상 100,000 이하의 정수이다. 둘째 줄에 길이가 정확히 N인 문자열 S가 주어진다. S의 각 문자는 영문 대문자 A부터 Z, 영문 소문자 a부터 z, 숫자 0부터 9, 하이픈(-) 중 하나이다. S에는 공백이 없다.
출력
규칙에 따라 정리한 문자열을 한 줄에 출력한다. 정리 후 아무 문자도 남지 않으면 EMPTY를 출력한다.
예제 입력 1
15 --ab---007-c--9-
예제 출력 1
AB-007-C-9
예제 입력 2
5 -----
예제 출력 2
EMPTY
예제 입력 3
12 aA00--bB---2
예제 출력 3
AA00-BB-2
힌트 펼치기
- 하이픈을 기준으로 나눈 조각 중 비어 있지 않은 조각만 남기고, 대문자로 바꾼 뒤 하이픈 하나로 연결할 수 있다.
관련 서재 장
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |