링크 : https://www.acmicpc.net/problem/20310
20310번: 타노스
어느 날, 타노스는 0과 1로 이루어진 문자열 $S$를 보았다. 신기하게도, $S$가 포함하는 0의 개수와 $S$가 포함하는 1의 개수는 모두 짝수라고 한다. 갑자기 심술이 난 타노스는 $S$를 구성하는 문자
www.acmicpc.net
- 문제
- 소요시간: 20분 16초
- 설계하기(접근방법)
1. 입력받기
문자열을 입력받는다
2. 구현하기
사전순의 정의를 알아보면 문제를 접근하기 쉽다
즉 0은 앞에 있을 수록, 1은 뒤에 있을 수록
사전 순 앞에 배치된다.
다른 의미로는 1을 앞에서 부터 삭제하고,
0은 뒤에서 부터 삭제하면 되는 것이다
파이썬의 index 함수는 앞에서부터 인자를 탐색해서
인덱스의 위치를 반환해준다
.index('1')를
.pop()해주면 되고
0은 뒤에서부터 빼줘야하니
배열을 뒤집어주고 [::-1]
인덱스의 위치를
.index('0')을 통해 찾는다
배열[음수]를 통해 접근할 것이기 때문에
실제 index 위치보다 1 작은 위치를 탐색해준다
3. 출력하기
결과를 출력한다
- 코드(출력)
s = list(input())
cnt_0, cnt_1 = s.count('0') // 2, s.count('1') // 2
for _ in range(cnt_1):
s.pop(s.index('1'))
for _ in range(cnt_0):
s.pop(-s[::-1].index('0')-1)
print(''.join(s))
- 얻어갈 부분
1. 리스트를 뒤에서 앞으로 순회하면서 삭제하는 경우에는 리스트 인덱스 번호에 대해서 신경쓰지 않아도 된다
2. 배열을 앞에서부터 pop하고 싶다면 리스트를 뒤집은 index를 추출한 후 pop한다
'알고리즘(백준)' 카테고리의 다른 글
[알고리즘/문자열] 22233번 가희와 키워드: - python (0) | 2024.01.26 |
---|---|
[알고리즘/문자열] 9996번 : 한국이 그리울 땐 서버에 접속하지 - python (1) | 2024.01.26 |
[알고리즘/문자열] 1213번 : 팰린드롬 - python (1) | 2024.01.23 |
[알고리즘/문자열] 2607번 : 비슷한 단어 - python (0) | 2024.01.22 |
[알고리즘/문자열] 1515번 : 수 이어 쓰기 - python (0) | 2024.01.22 |