문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

4015 : 자릿수 교체

•시간제한: 1.000 S •메모리제한: 256 MB •제출: 170 •통과: 66 •만든사람: suakii

4015 : 자릿수 교체

시간 1.000s · 메모리 256MB · 제출 170 · 정답 66

문제 설명

정수 $N$과 두 위치 $A, B$가 주어졌을 때, $N$의 왼쪽에서부터 $A$번째 자릿수와 $B$번째 자릿수를 서로 바꾼 결과를 구하는 프로그램을 작성하시오.
교체 후 결과 정수 앞에 오는 $0$은 제거해야 합니다. (예: 0123 → 123)

[제약 조건]
• $10 \le N \le 10^8$
• $1 \le A < B \le (N\text{의 자릿수 개수})$
• $N, A, B$는 정수

[💡 단계별 해결 힌트]
1. 문자열을 리스트로 변환하기:
  • 파이썬의 문자열은 글자를 직접 바꿀 수 없으므로(불변 객체), list(s)를 사용하여 한 글자씩 분리된 리스트로 만듭니다.
  • 예: digits = list(str(N)) → ['1', '0', '2', '4', '3']
2. 파이썬의 0번 인덱스 주의:
  • 문제의 $A$번째, $B$번째는 1부터 세므로, 리스트에서의 실제 인덱스는 A - 1과 B - 1입니다.
3. 두 자릿수 맞교환(Swap):
  • digits[A - 1], digits = digits, digits[A - 1] 형태로 두 자리를 손쉽게 맞바꿉니다.
4. 다시 합치고 앞의 0 제거하기:
  • "".join(digits)로 문자열을 다시 합친 뒤, int()로 감싸면 앞자리 0이 깔끔하게 제거된 정수가 됩니다! (예: print(int("".join(digits))))

입력 설명

첫째 줄에 정수 $N$과 두 위치 $A, B$가 공백으로 구분되어 주어집니다.

출력 설명

$A$번째와 $B$번째 자릿수를 교체한 정수를 출력합니다.

입력 예시
COPY
복사되었습니다!

10243 2 5

출력 예시
COPY
복사되었습니다!

13240

도움

[💡 핵심 코드 가이드]
• s, a, b = input().split()
• digits = list(s) (리스트로 변환해야 자릿수 교체가 가능합니다)
• a, b = int(a) - 1, int(b) - 1 (0-based 인덱스 변환)
• digits[a], digits = digits, digits[a] (맞교환)
• print(int("".join(digits))) (정수 변환으로 앞자리 0 자동 제거)
NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘