본문 바로가기

PYTHON91

백준 실버2 18111. 마인크래프트 (python) 마인크래프트 인벤토리에 블록이 하나 있기 때문에, 맨 오른쪽 아래에 블록을 하나 채우면 된다. 풀이 처음 푼 풀이는 아래와 같은 풀이로 3중 for문이였다. 시간초과가 났다... pypy3로 하니 통과는 하는데... 흐음... import sys N, M, B = map(int, sys.stdin.readline().split()) board = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] min_value = sys.maxsize index = 0 # 땅의 높이는 256보다 작거나 같은 자연수 또는 0이므로 0부터 순회 # 이 땅 높이로 만드려는 거임 for height in range(257): # 초과, 부족 블록 갯수 exce.. 2024. 2. 29.
SWEA D3 12368. 24시간 (python) 24시간 풀이 어... 몹시 간단하다. 모듈러 연산자만 쓸 줄 알면 끝. T = int(input()) for testcase in range(1, T+1): A, B = map(int, input().split()) C = A + B answer = C % 24 print(f'#{testcase} {answer}') 2024. 2. 28.
SWEA D3 13218. 조별과제 (python) 조별과제 풀이 이게 왜 D3?라는 생각이 드는 문제이다. 몫과 나머지를 계산할 줄 안다면 금방 풀린다. T = int(input()) for testcase in range(1, T + 1): N = int(input()) answer = N // 3 print(f'#{testcase} {answer}') 2024. 2. 28.
SWEA D3 15612. 체스판 위의 룩 배치 (python) 체스판 위의 룩 배치 풀이 룩은 체스에서 가로 세로로 쭈우욱 갈 수 있는 녀석이다. 맞이 장기의 차와 같은 녀석이지. 이 녀석이 서로 영향을 안받게 8 by 8 칸의 보드판에 놓아져 있는지를 판단하는 문제이다. 룩이 안놓여 있는 곳은 '.'으로 룩이 놓여 있는 곳은 'O'로 되어있다. 총 8개의 룩이 놓여야 하는데, 그러면 우선 1. 행을 확인해서 한줄에 여러 개가 있거나, 아무것도 없으면 안 됨. 2. 열을 확인해서 이미 해당열에 룩이 있어도 안됨. 이 2가지를 판단하여 풀이를 했다. 그래서 아래처럼 풀이를 했고, 해결되었다. def solution(board): # 열을 확인하기 위한 용도 column = [0] * 8 # 룩이 같은 열이나 같은 행에 있는지 확인 for i in range(8): #.. 2024. 2. 27.
SWEA D3 6485. 삼성시의 버스 노선 (python) 삼성시의 버스 노선 풀이 문제 입력이 아주 조금 복잡하긴 한데 자세히 읽으면 금방 무슨 말을 하고자 하는지 이해가 된다. A1, B1 이렇게 적혀있는 것들은 한 버스 노선이 어디 정류장부터 어디 정류장까지 가는지에 대한 정보를 주는 것이다. 그리고 C들은 정류장 번호이다. 나는 머릿속의 복잡함을 최소화하고자, 일단 각 리스트를 만들고 이를 리스트에 넣은 뒤에 정리하는 방식으로 했지만, 그렇게 하지 않더라도 풀 수 있는 방법이 충분히 있을 거라고 생각된다. 우선 나는 시작 정류장, 도착 정류장, 확인 정류장을 각 리스트를 생성하고, 이후 이를 이용하는 방식을 사용했다. 또한 5000개의 정류장이므로, 1~5000번을 이용하기 위해, bus_stop = [0] * 5001로서 변수를 생성하였다. 위처럼 변수.. 2024. 2. 27.
SWEA D3 13428. 숫자 조작 (python) 숫자 조작 풀이 숫자 2개를 서로 위치만 바꿔서 가장 큰 값과 가장 작은 값을 확인하는 문제다. 안 바꿨을 때 가장 큰 값이거나 가장 작은 값이면 안 바꿔도 된다. 또한 맨 앞자리는 0일 수가 없음도 인식하고 풀면 금방 풀린다. 내가 푼 방식은 완전탐색으로 시도했다. N = 10^9이지만, 실제로 사용하게 되는 자릿수는 9개이기 때문이다. 그래서 아래처럼 풀었다. 일단 string자체로는 변환을 할 수 없으니, list로 변환해서 숫자 자리를 바꾸는 방법을 이용했다. 그 결과 아래 코드가 생성되었고 문제를 해결했다. def solution(S): global min_value global max_value for i in range(len(S)-1): for j in range(i+1, len(S)): .. 2024. 2. 27.