문제 3154 · 비트 II
진열 카드의 상품 코드
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
온라인 쇼핑몰의 창고에서는 상품을 등록할 때 영문자와 숫자로 된 코드를 붙인다. 창고 직원은 긴 코드를 읽기 쉽도록 중간에 붙임표를 넣기도 하고, 영문자를 대문자와 소문자로 섞어 적기도 한다. 쇼핑몰은 등록된 코드로 상품 진열 카드를 만들면서 표시 방법을 하나로 통일하려 한다. 원본 상품 코드는 영문 대문자, 영문 소문자, 숫자, 붙임표로만 이루어진 문자열이다. 여기서 붙임표는 문자 '-'를 뜻한다. 진열 카드에 쓸 코드를 만들 때는 원본을 왼쪽부터 오른쪽으로 읽으면서 다음 규칙을 적용한다. 붙임표는 결과에 넣지 않는다. 영문 소문자는 같은 알파벳의 대문자로 바꾸어 넣는다. 영문 대문자와 숫자는 그대로 넣는다. 이 규칙 외에는 어떤 문자도 추가하거나 삭제하지 않는다. 붙임표는 코드의 맨 앞이나 맨 뒤에도 나타날 수 있고, 여러 개가 연속해서 나타날 수도 있다. 어느 위치에 있든 붙임표는 모두 제거한다. 서로 다른 두 문자가 붙임표를 사이에 두고 있었다면, 붙임표를 제거한 결과에서는 두 문자가 바로 이어진다. 문자들의 상대적인 순서는 바뀌지 않는다. 숫자는 상품 코드의 일부이므로 수로 해석하지 않는다. 따라서 맨 앞에 있는 숫자 0도 반드시 남겨야 하며, 같은 숫자가 여러 번 이어져 있어도 모두 남긴다. 영문자 역시 같은 문자가 반복된다는 이유로 합치지 않는다. 예를 들어 소문자 두 개가 나란히 있다면 각각 대문자로 바꾸어 두 글자를 모두 적는다. 원본 코드에는 붙임표가 아닌 문자가 적어도 하나 들어 있으므로 완성된 코드는 빈 문자열이 되지 않는다. 한 번의 입력에는 상품 코드 하나만 주어진다. 주어진 규칙에 따라 진열 카드에 표시할 코드를 만드는 프로그램을 작성한다.
입력
첫째 줄에 원본 상품 코드 C가 주어진다. C의 길이는 1 이상 1,000 이하이다. C는 영문 대문자 A부터 Z, 영문 소문자 a부터 z, 숫자 0부터 9, 붙임표 '-'로만 이루어진다. C에는 붙임표가 아닌 문자가 적어도 하나 포함된다. 공백은 포함되지 않는다.
출력
붙임표를 모두 제거하고 영문 소문자를 대문자로 바꾼 상품 코드를 한 줄에 출력한다.
예제 입력 1
--a7-bC-02--
예제 출력 1
A7BC02
예제 입력 2
000-x-x
예제 출력 2
000XX
예제 입력 3
Q
예제 출력 3
Q
힌트 펼치기
- 원본의 각 문자를 순서대로 확인하고 붙임표가 아닌 문자만 결과에 추가한다.
- 숫자도 문자열의 문자로 처리하면 앞쪽의 0을 그대로 보존할 수 있다.
관련 서재 장
알고리즘 분류
문자열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |