문제요약 나의 코드 및 설명 입력받은 수를 리스트에 저장하고, for문을 통해 인덱스 1의 수부터 하나하나 살펴본다. 만약 이전의 수보다 크거나 같다면 big_cnt에 1을 추가한다. 이 때, big_cnt 값이 ans보다 크다면, ans를 big_cnt로 갱신한다. 만약, 이전의 수보다 크거나 같지 않다면 big_cnt를 1로 초기화한다. 이번엔 이전의 수보다 작거나 같은지 확인하기 위해 새로운 if문을 수행한다. 동작 방식은 크거나 같은지 확인하는 if문과 동일하다. 이 때, small_cnt의 값을 갱신하기 위해 ans 변수에 접근하게 되는데, 이를 통해 연속되는 크거나 같은 수의 개수, 연속되는 작거나 같은 수의 개수의 최댓값이 ans에 저장되게 되고, ans만 출력하게 되면 문제를 해결할 수 있..
문제요약 나의 코드 및 설명 01 (노가다.. 성공) c, r = map(int, input().split()) k = int(input()) if k > c*r: print(0) r_list = list(range(r,0,-1)) c_list = list(range(c-1,0,-1)) i = 0 seat = 0 plus_time = 0 while True: if i > len(r_list)-1 or i > len(c_list)-1: break if seat >= k: break else: seat = seat + r_list[i] plus_time += 1 if seat >= k: break else: seat = seat + c_list[i] plus_time += 1 i+=1 if k > seat:..
문제요약 나의 코드 및 설명 두 리스트 간의 비교연산자를 활용하여 문제를 해결하였다. 각 라운드마다 낸 총 딱지의 개수가 각 리스트의 첫 번째 리스트에 저장되므로, 첫 번째 리스트를 pop() 함수를 통해 제거한다. 이제, 내림차순으로 정렬하여 두 개의 리스트를 비교한다. n = int(input()) for _ in range(n): a = list(map(int, input().split())) b = list(map(int, input().split())) a.pop(0) a.sort(reverse=True) b.pop(0) b.sort(reverse=True) if a>b: print("A") elif ab) >>True a = [4,4,4] b = [4,3,4,4,4] print(a>b) >>T..
문제요약 나의 코드 및 설명 역순으로 출력하는 경우는 두 가지 경우이다. 1. 밖의 띄어쓰기를 만날 경우 2. 를 만날 경우 밖의 띄어쓰기와 안의 띄어쓰기를 따로 구분해주어야 하는데 check 변수를 통해 구분해주었다. string = list(input()) string += " " ans = [] #안의 띄어쓰기인지 체크하기 위함 #-1 : 밖의 띄어쓰기, 1 : 안의 띄어쓰기 check = -1 for i in range(len(string)): #띄어쓰기를 만나면 if string[i] == " ": #만약 안의 띄어쓰기가 아니면 if check == -1: #ans안의 요소들을 역순으로 출력 while ans: print(ans.pop(),end="") #현재 글자(string[i]:띄어쓰기)는..
문제요약 나의 코드 및 설명 돌을 1개 또는 3개 가져갈 수 있을 때 이기는 사람을 구하는 문제이고, 정답은 한 명만 출력되게 된다. 여기서, 돌을 1개만 가져가는 게임일 때와, 3개만 가져가는 게임일 때 모두 승자가 같다는 것을 알 수 있고, 돌을 1개만 가져가는 게임이라고 가정했을 때, 돌의 개수가 홀수일 경우에는 무조건 처음 게임을 시작한 사람이 승리하게 된다. 따라서 아래와 같이 코드를 작성했다. n = int(input()) if n % 2 == 1: print("SK") else: print("CY") 다른 코드 및 설명 - DP(다이나믹 프로그래밍) 이 문제가 실버5 문제이기도 하고, 너무 쉽게 푼 감이 있어서 어떤 알고리즘을 활용하여 풀어야하나 확인해보니 DP(다이나믹 프로그래밍)을 활용하..
문제요약 나의 코드 및 설명 입력받은 문자열을 리스트에 저장한다. 리스트에 저장된 요소를 역순으로 하나씩 살펴보는 for문을 작성하였다. 리스트에 저장된 각각의 요소가 영문 A~F(아스키코드 65이상 70이하의 범위) 일 때와, 숫자 일 때, ans에 서로 다른 값이 저장되도록 코드를 작성하였다. string = list(input()) ans = 0 for i in range(-1,-(len(string))-1,-1): if 65
문제요약 나의 코드 및 설명 이 문제의 핵심은 가로, 세로를 따로 따지는 것이 아닐까 싶다. 세로가 1, 2, 3, 4,, 일때 가로의 길이에 따라 그려질 수 있는 도형을 그려보면, 세로가 1일 때는 모든 도형을 다 그릴 수 있다. 반면, 세로가 2일 때는 가로가 1인 도형은 제외되게 된다. 세로가 1일 때의 도형과 겹치기 때문이다. 세로가 3일 때 역시 가로가 1, 2인 도형은 제외되게 된다. 이 것을 구현해보면 다음과 같다. 세로의 길이가 1~n 까지 주어질 때, 가로의 길이는 세로의 다음 길이부터 살펴보면 된다. 이 때, 가로와 세로의 곱이 n을 초과하면 안된다. n보다 같거나 작을 때마다 ans에 1씩 더해주게 되면 정답 판정을 받게 된다. n = int(input()) ans = 0 for i ..
문제요약 나의 코드 및 설명 신호등 정보를 리스트에 저장하고, while문을 통해 시간과 이동거리가 1씩 증가할 때, 신호등을 만나게 되면 신호등 정보가 저장된 리스트를 통해 현재 빨간불인지, 파란불인지를 살펴본다. n, l = map(int, input().split()) light = [] #신호등 정보를 리스트에 저장 for _ in range(n): light.append(list(map(int, input().split()))) #시간 time = 0 #이동한 거리 distance = 0 i = 0 while True: #시간이 1씩 경과 time += 1 #시간이 1씩 경과함에 따라 이동한 거리도 1씩 증가 distance += 1 #이동한 거리가 도로의 끝에 다다르면 반복문 탈출 if dis..