파이썬 백준 11723번
실버 5
https://www.acmicpc.net/problem/11723
문제 보기
분류: 구현, 비트마스킹
문제 풀기
비트마스킹이란 것을 사용하라는 문제 같은데 비트마스킹을 사용하지 않고 풀이하였다.
왜 그런지 모르겠지만 제출하고 채점하는 과정에서 퍼센트가 더디게 올라갔다.
집합 S 는 1 ~ 20 번호로 이루어진 집합이기에 index 에 맞춰 21 개의 0 으로 초기화된 리스트를 생성하고 조건에 맞게 0 또는 1 로 표시한다.
명령어와 데이터 또는 명령어만 입력되는 두 가지 형태의 입력에 대해 리스트로 입력을 받고 그에 따른 조건으로 분리하여 add, remove, check, toggle, all 그리고 empty 각각의 함수에 적용한다.
코드 보기
import sys
inputdata = sys.stdin.readline
def fnAdd(x): # add 명령에 의해 해당 index 값을 1 로 표시.
s_ls[x] = 1
def fnRemove(x): # remove 명령에 의해 해당 index 값을 0 로 표시.
s_ls[x] = 0
def fnCheck(x): # check 명령에 의해 해당 index 값을 출력.
if s_ls[x] == 1:
print(1)
elif s_ls[x] == 0:
print(0)
def fnToggle(x): # toggle 명령에 의해 해당 index 값을 0 또는 1 로 변경.
if s_ls[x] == 1:
s_ls[x] = 0
elif s_ls[x] == 0:
s_ls[x] = 1
def fnAll(): # all 명령에 의해 모든 값을 1 로 변경.
for i in range(21):
s_ls[i] = 1
def fnEmpty(): # empty 명령에 의해 모든 갑을 0 으로 변경.
for i in range(21):
s_ls[i] = 0
if __name__ == "__main__":
s_ls = [0] * 21 # 집합 S 의 범위에 해당하는 값이 0 인 리스트를 생성. index 를 맞추기 위해 21 개 생성.
testCase = int(inputdata().strip())
while testCase > 0:
command_ls = list(map(str, inputdata().split())) # 명령어와 데이터가 들어오는 입력라인과 명령어만 들어오는 입력라인을 모두 받기 위해 리스트로 저장.
if len(command_ls) == 2: # 명령어와 데이터가 들어 올때.
command = command_ls[0]
x = int(command_ls[1]) # string 으로 받은 숫자를 int 타입으로 변경.
print(f'command, x: {command}, {x}') # TEST PRINT
if command == "add":
fnAdd(x)
elif command == "remove":
fnRemove(x)
elif command == "check":
fnCheck(x)
elif command == "toggle":
fnToggle(x)
elif len(command_ls) == 1: # 명령어만 들어 올때.
command = command_ls[0]
print(f'command: {command}') # TEST PRINT
if command == "all":
fnAll()
elif command == "empty":
fnEmpty()
testCase -= 1
print(f's_ls: {s_ls}') # TEST PRINT
print()
'''
command, x: add, 1
s_ls: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: add, 2
s_ls: [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 1
1
s_ls: [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 2
1
s_ls: [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 3
0
s_ls: [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: remove, 2
s_ls: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 1
1
s_ls: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 2
0
s_ls: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: toggle, 3
s_ls: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 1
1
s_ls: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 2
0
s_ls: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 3
1
s_ls: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 4
0
s_ls: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command: all
s_ls: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
command, x: check, 10
1
s_ls: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
command, x: check, 20
1
s_ls: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
command, x: toggle, 10
s_ls: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
command, x: remove, 20
s_ls: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
command, x: check, 10
0
s_ls: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
command, x: check, 20
0
s_ls: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
command: empty
s_ls: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 1
0
s_ls: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: toggle, 1
s_ls: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 1
1
s_ls: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: toggle, 1
s_ls: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
command, x: check, 1
0
s_ls: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
'''
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 2605 - 줄 세우기 (0) | 2023.01.29 |
---|---|
[Java] 백준 풀기 2475 - 검증수 (0) | 2023.01.28 |
[Java] 백준 풀기 2441 - 별 찍기 4 (0) | 2023.01.26 |
[Java] 백준 풀기 2440 - 별 찍기 3 (0) | 2023.01.25 |
[Java] 백준 풀기 2439 - 별 찍기 2 (0) | 2023.01.24 |