Devin.KR

← 전체 문제

문제 1009 · 입문 2

커밋 메시지 검사

문자열

테스트별 제한 1000ms · 브라우저 채점

문제

우리 팀의 커밋 메시지는 `종류: 요약` 꼴이어야 한다. 자세한 규칙은 다음과 같다. 1. 종류는 feat, fix, docs, refactor, test 중 하나이고 소문자로 쓴다. 2. 종류 바로 뒤에 콜론(:)이 오고, 그 뒤에 공백이 정확히 한 칸 온다. 3. 그 뒤가 요약이다. 요약은 1자 이상 50자 이하이고, 공백으로 시작하지 않으며, 마침표(.)로 끝나지 않는다. 메시지에서 처음 나오는 콜론 앞부분을 종류로 본다. 콜론이 없으면 규칙을 어긴 메시지다. N개의 커밋 메시지가 주어질 때 규칙을 어긴 메시지를 모두 찾아라.

입력

첫째 줄에 메시지 수 N (1 ≤ N ≤ 1,000) 이 주어진다.

다음 N개 줄에 메시지가 한 줄에 하나씩 주어진다. 메시지는 길이 1 이상 100 이하이고, 영문·숫자·기호·공백(ASCII)으로만 이루어져 있으며, 공백으로 시작하거나 끝나지 않는다.

출력

첫째 줄에 규칙을 어긴 메시지 수 K 를 출력한다. K 가 1 이상이면 둘째 줄에 어긴 메시지의 번호(1부터)를 오름차순으로 공백을 사이에 두고 출력한다.

예제 입력 1

4
feat: add login page
Fix: typo
docs:update readme
fix: null check.

예제 출력 1

3
2 3 4

예제 입력 2

2
refactor: split parser
test: add cases for retry

예제 출력 2

0
힌트 펼치기
  • 입력을 공백 기준으로 자르면 요약 안의 공백 정보가 사라진다. 줄 단위로 읽자.
  • 처음 나오는 콜론의 위치 i 를 찾으면, 종류는 i 앞, 공백은 i+1 번째 글자, 요약은 i+2 번째부터다.

관련 장

파이썬 문자열 다루기

자바스크립트 변수와 자료형

출처: Devin.KR 자체 제작

풀이 작성

코드는 서버로 전송하지 않습니다. 테스트가 공개되는 연습용 채점으로, 대회·인증용이 아닙니다.

Python 채점은 준비 중입니다.

Tab: 공백 2칸 · Esc 후 Tab: 다음 요소로 이동. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    로그인 여부와 관계없이 이 브라우저에만 최근 제출 50개를 저장합니다.

    이 브라우저의 제출 기록