본문 바로가기

PYTHON91

백준 실버4 11399. ATM (python) ATM 풀이 문제를 찬찬히 읽으면 금방 해결되는 문제이다. 처음에는 섞든 다 똑같은 것 아닌가 생각했는데 그게 아니라 5 사람이 있으면 1번째 사람이 걸린 시간 2번째 사람이 걸린 시간 3번째 사람이 걸린 시간 4번째 사람이 걸린 시간 5번째 사람이 걸린 시간 의 합이 최소화가 되는 것을 구하는 것이다. 따라서 이것은 오름차순으로 정렬시킨 다음에 슬라이싱을 적용하든 뭘 하든 sum(list [:나+1])들의 합이라고 생각하면 된다. 나는 슬라이싱은 시간이 더 걸릴 것이라 생각했기에 시간을 누적시키는 방법을 사용했다. 따라서 코드는 다음과 같다. import sys N = int(sys.stdin.readline().strip()) p_list = list(map(int, sys.stdin.readline.. 2024. 3. 2.
백준 실버4 1764. 듣보잡 (python) 듣보잡 풀이 문제를 보고 바로 작성해서 아래처럼 풀었다. 듣지 못해본 사람 보지 못해본 사람 의 명단을 받아서 중복되는 사람인 듣도보도못한사람을 사전순으로 출력하는 것이다. 따라서 각 입력받고 순서대로 중복되는지 확인하는 방법을 사용했다. 그러나 시간 초과가 발생했다. import sys N, M = map(int, sys.stdin.readline().split()) unknown_heard = [] unknown_look = [] for _ in range(N): unknown_heard.append(sys.stdin.readline().strip()) for _ in range(M): unknown_look.append(sys.stdin.readline().strip()) unknown_look_h.. 2024. 3. 2.
백준 실버2 1012. 유기농 배추 (python) 유기농 배추 풀이 dfs 문제를 풀기 위해 백준에서 dfs 카테고리로 문제를 찾았고 유기농 배추를 맞이했다. 보통 N,M의 방식으로 줄텐데 여긴 왜 M, N으로 주는지 모르겠지만, 잘 받고 코드에 입력했다. 해당 문제는 bfs또는 dfs로 풀 수 있는데 우선 dfs로 먼저 풀어봤고 아래처럼 풀었다. 입력값 받기 1. board와 visited 생성 및 몇 개의 군락이 있는지 확인할 count 변수 생성 2. 위치를 순회하면서, 배추가 있고, 해당 배추를 확인하지도 않았다면, dfs를 진행! 3. dfs 함수 내에서 stack을 생성하고, 이 stack을 이용해서 진행 -> stack에 값이 존재하는 동안 해당 위치에서 4방향을 확인하고, 해당 위치에 배추가 있고, 확인 안 했으면, 계속해서 진행하는 방식.. 2024. 3. 1.
SWEA D3 20019. 회문의 회문 (python) 회문의 회문 풀이 문제는 일단 회문이다. 그런데 회문 안에서 또 회문이 있어야한다. 문제에서 적힌 것을 그대로 실행해주면된다. S는 회문이다. S의 처음 (N-1)/2글자가 회문이다. S의 마지막 (N-1)/2글자가 회문이다. 이 조건을 만족시켜주면 되고, python에서는 아주 간단하게 코드를 구성해서 만들 수 있다. def solution(S): # 회문일 때 시작 N = len(S) if S == S[::-1]: if S[:N//2] == S[:N//2][::-1] and S[N//2+1:] == S[N//2+1:][::-1]: return 'YES' else: return 'NO' return 'NO' T = int(input()) for testcase in range(1, T+1): S = i.. 2024. 3. 1.
SWEA D3 10570. 제곱 팰린드롬 수 (python) 제곱 팰린드롬 수 풀이 정말 간단하게 풀었다. for에 if에 if에 if를 사용해 봤다. 나 자신이 회문이 어야 하고, 루트값도 회문이 어야 하기 때문에 이렇게 사용했다. 2번째 if문은 루트값이 정수로 떨어지는지 확인하기 위해 사용했다. T = int(input()) for testcase in range(1, T+1): A, B = map(int,input().split()) tenet = [] for N in range(A, B+1): if str(N) == str(N)[::-1]: if N**0.5 == int(N**0.5): if str(int(N**0.5)) == str(int(N**0.5))[::-1]: tenet.append(N) print(f'#{testcase} {len(tenet)}') 2024. 3. 1.
SWEA D3 15941.평행사변형 (python) 평행사변형 풀이 문제를 보고 평행사변형의 넓이와 마름모의 넓이 구하는 공식을 계속봤다. 그런데 문제를 다시 보니 내가 잘 못 생각하고 있었음을 깨달았다. 가장 넓은 평행사변형의 넓이를 출력하라. 이런... 정사각형의 넓이를 출력하면 된다. 따라서 풀이는 아래와 같다. T = int(input()) for testcase in range(1, T+1): N = int(input()) S = N ** 2 print(f'#{testcase} {S}') 2024. 3. 1.