문제요약 나의 코드 및 설명 def find_distance(a,b,r,s): 동근이로부터 상점까지의 최소 거리를 찾는 메서드를 생성하였다. 동근이의 위치(a)가 어디냐에 따라, 상점의 위치(r)가 어디냐에 따라 거리 계산하는 법이 달라지므로, 제법 복잡하고 노가다 방법으로 코드를 작성하였다. result : find_distance() 메서드가 실행될 때마다 나오는 값을 result 값에 저장한다. 입력받은 상점의 개수만큼 find_distance() 메서드를 실행시키고, result 값을 출력한다. result = 0 def find_distance(a,b, r, s): global n, m, result if a == 1: if r == 2: result += min(b+m+s, (n-b)+m+(n..
문제요약 나의 코드 및 설명 가로, 세로 범위가 최대 100cm라고 했고, 케이스가 많을 것 같지 않아서 가로로 잘랐을 때 쪼개진 세로 눈금들의 길이와, 세로로 잘랐을 때 쪼개진 가로 눈금들의 길이를 곱해서 최대값을 찾았다. n,m : 가로와 세로를 입력한다. cut : 자르는 총 횟수를 입력한다. x_points, y_points : 잘랐을 때 나오는 사각형의 가로축의 꼭지점과 세로축의 꼭지점을 저장할 수 있는 리스트를 선언한다. x_width, y_height : 잘랐을 때 나오는 사각형의 가로 길이와 세로 길이를 저장할 수 있는 리스트를 선언한다. n, m = map(int, input().split()) cut = int(input()) x_points = [0] y_points = [0] x_p..
문제요약 나의 코드 및 설명 def switching(a, b): a, b를 변수로 하는 메서드 생성. a = 1(남학생)일 경우 스위치의 범위 내에서 받은 수의 배수에 해당하는 스위치의 상태를 변경하도록 코드를 작성하였다. a = 2(여학생)일 경우, 받은 수의 스위치 상태를 변경하고, 좌/우의 스위치 상태를 살펴서 상태가 같다면 스위치 상태를 변경하도록 코드를 작성하였다. 스위치의 상태를 변경하기 위해 의 절대값을 갖도록 코드를 작성하였다. ex) 의 절대값 = 1 / 의 절대값 = 0 switch_zero : 스위치 번호와 인덱스 번호를 맞추기 위해 작성하였다. switch, switch_status : switch에 스위치 상태를 리스트로 저장하고, switch_zero와 switch를 더해줌으로..
문제요약 나의 코드 및 설명 board : 빙고판 call_temp : 사회자가 부른 번호를 2차원 리스트에 임시 저장 call : 사회자가 부른 번호를 1차원 리스트에 저장 def bingo(board) : 빙고판이 몇 줄 지워졌는지 체크하는 메서드 생성. 가로 / 세로 / 대각선 두 가지 케이스, 총 4개의 케이스에 대해 몇 줄이 지워졌는지 카운트하여 저장한다. 이 때 cnt 값이 누적되지 않도록 꼭 bingo 메서드가 호출될 때 마다 cnt 값이 초기화 될 수 있도록 작성한다. board = [] #빙고판 call_temp = [] #사회자가 부른 번호(임시) for _ in range(5): board.append(list(map(int, input().split()))) for _ in rang..
문제요약 나의 코드 및 설명 n : 학생의 수 num_list : 줄을 선 학생대로 뽑은 번호 students : 학생들이 줄을 선 현황을 리스트로 표현하였다. for문 : 학생 수 만큼 반복하는 반복문을 작성하였다. 첫 번째 학생(i = 0)의 경우는 무조건 통과하게 되고, 두 번째 학생(i = 1)부터 본격적으로 반복문을 수행하게 되는데, for문 내의 for문으로 해당 학생이 뽑은 번호 만큼 자리 이동이 될 수 있도록 작성하였다. 예를 들어 4번째 학생(i = 3)이 뽑은 번호는 인데, 이때 인덱스 3을 인덱스 2의 값으로 바꾸고, 인덱스 2를 인덱스 1의 값으로 바꾸고 인덱스 1을 인덱스 0의 값으로 바꾸고, for문을 나와서 인덱스 를 학생 번호로 바꿔주면 된다.(뽑은 번호만큼 앞으로 가야하니까..
문제요약 나의 코드 및 설명 개미의 X좌표가 p, 경과된 시간이 t일 때 (p+t)//w 가 짝수이면, 이동 후의 인덱스는 (p+t)%w 홀수이면, 이동 후의 인덱스는 -((p+t)%w)-1 이다. w, h = map(int, input().split()) p, q = map(int, input().split()) t = int(input()) x = list(range(w+1)) y = list(range(h+1)) if ((p+t)//w) == 0 or ((p+t)//w) % 2 == 0: nx = x[(p+t)%w] elif ((p+t)//w) % 2 == 1: nx = x[-((p+t)%w)-1] if ((q+t)//h) == 0 or ((q+t)//h) % 2 == 0: ny = y[(q+t)%..
문제요약 나의 코드 및 설명 graph : 크기가 전체 컴퓨터의 개수 + 1 인 리스트를 초기화하고, for 문을 수행하여 각 노드가 연결된 정보를 2차원 리스트로 표현한다. visited : 바이러스에 감염된 컴퓨터 번호를 저장하기 위한 리스트 dfs(graph, x, visited) : dfs(x)로 작성하여도 정상동작한다. 현재 노드를 방문처리하고, 노드와 연결된 다른 노드를 방문처리 하기 위해 for문을 수행한다. (재귀함수) computer = int(input()) connect = int(input()) graph = [[] for _ in range(computer + 1)] #각 노드가 연결된 정보를 2차원 리스트로 표현 for _ in range(connect): a,b = map(in..
문제요약 나의 코드 및 설명 방청객의 번호를 출력해야 하므로, , 에 인덱스를 저장한다. l = int(input()) n = int(input()) cake_list = [0 for _ in range(l+1)] expect = 0 #가장 많은 조각을 받은 방청객이 기대한 케이크 수 expect_ans = 0 #인덱스 #방청객 수만큼 for문을 수행한다. for i in range(1,n+1): p,k = map(int, input().split()) #현재 기대 케이크 수가 이전 기대 케이크 수와 같다면 그대로 유지한다.(작은번호 출력) if expect == k-p+1: expect = expect #기대한 케이크 수가 최대라면, expect에 현재 기대 케이크 수를 저장한다. elif max(ex..