첫 줄에 문자열 s, 둘째 줄에 글자 하나 c가 주어진다. s에서 c가 처음 나오는 자리와 마지막으로 나오는 자리를 빈칸 하나로 띄워 출력하라. 자리는 0부터 센다. c가 s에 한 번도 없으면 "-1 -1"을 출력한다. 한 번만 나오면 두 수가 같다.
입력
s는 영어 소문자와 숫자, 길이 1 ~ 1,000. c는 영어 소문자나 숫자 한 글자
출력
처음 자리와 마지막 자리(없으면 -1 -1)
예시 1 · stdin
banana
a
stdout
1 5
예시 2 · stdin
hello
z
stdout
-1 -1
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
처음 자리·마지막 자리: Python s.find(c)/s.rfind(c), JS·TS·Java indexOf/lastIndexOf, C# IndexOf/LastIndexOf(char를 넘기면 서수 비교), C++ find/rfind, C strchr/strrchr. 크레이콘은 s.자리찾기(c)로 처음 자리를 얻고, 마지막 자리는 끝에서부터 s[i] == c를 묻는 반복으로 찾아요(뒤에서 찾는 멤버가 없어요). 없을 때 돌려주는 값이 언어마다 달라요: 대부분 -1이지만, Python index/rindex는 ValueError를 던지고, C++ find는 std::string::npos(size_t의 가장 큰 수, 18446744073709551615)를 줘서 그대로 출력하면 -1이 아니에요. C의 strchr은 포인터나 NULL을 주니, NULL인지 먼저 묻고 p - s로 자리를 구해요. 글자 하나는 Java·C#·C·C++에서 char(작은따옴표 'a')이고, Python·JS·TS·크레이콘에는 따로 없어서 길이 1인 문자열이에요.
Pythonmain.py · 3 줄
s = input()c = input()[0]print(s.find(c), s.rfind(c))