목록코팅테스트/백준 문제 모음 (296)
For Programmer
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b1MyKX/btrsi9aUMjI/t8K8L90mVO8u1pT1j4rlMK/img.png)
이 문제는 맨 앞의 개수만 제외하고 어떻게 리스트에 저장할 지 생각하면 쉽게 풀리는 문제이다. N = int(input()) for _ in range(N): temp_a = list(map(int, input().split()))[1:] # 입력을 받되 맨 앞의 개수는 제외하고 저장한다. temp_b = list(map(int, input().split()))[1:] # 입력을 받되 맨 앞의 개수는 제외하고 저장한다. for i in range(4, 0, -1): # 4부터 반대로 돈다. if temp_a.count(i) > temp_b.count(i): # 만약 해당 모양의 개수가 A가 더 많다면 print("A") break elif temp_a.count(i) < temp_b.count(i): #..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bz5Z0p/btrr4wTJnb5/ETrGv9vc9ThHKwPUGoudvk/img.png)
이 문제는 이차원 리스트만 잘 활용하면 쉽게 풀 수 있는 문제이다. 이차원 리스트의 인덱스를 학년으로 생각하고 각 인덱스에 리스틀르 하나 더 추가하여 0번째 인덱스는 여학생의 수 , 1번째 인덱스는 남학생의 수를 저장해 놓으면 된다. N, K = map(int, input().split()) # 각각의 학년에 array[i]에 array[i][0] = 여학생의 수 array[i][1] = 남학생의 수를 저장하기 위핸 이차원리스트 선언 array = [[0, 0] for _ in range(6)] for i in range(N): gender, grade = map(int, input().split()) # 0 - 여자 1- 남자 array[grade - 1][gender] += 1 # 해당 이차원 리스트..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MG383/btrr5TOkcVb/joSKtflHgBIs2Jm7xMBsGK/img.png)
t = int(input()) for i in range(t): a, b = map(int, input().split()) new_b = b % 4 # 모든 제곱은 4번의 순환을 가짐. if new_b == 0: # 만약 4번째라면(1,2,3은 그대로 값이 저장되나 4는 0으로 저장됨) new_b = 4 # 그 값을 4로 바꿔준다. number = a ** new_b if number % 10 == 0: # 계산한 값의 일의자리가 0이라면 print(10) # 10을 출력 else: # 1~9 사이라면 print(number % 10) #1~9 출력
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Y09VD/btrseQCNw9y/kePChSONRXq2sZ0pWXKXe1/img.png)
이 문제는 푸는 방식을 모른다면 정말 어려운 문제다. 문제에서 1001,1001 이라고 개수를 정해주었기 때문에 제일 먼저 생각해야할 것이 미리 1001*1001 배열을 정해서 배열안의 값을 각각 색종이마다 다르게 저장하는 방식으로 생각을 해야한다. N = int(input()) info = [] array = [[-1] * 1001 for _ in range(1001)] max_index_height, max_index_width = 0, 0 # 최대 인덱스를 저장할 변수 선언 for k in range(N): x1, y1, w, h = list(map(int, input().split())) # 각각 x,y,넓이,높이 정보를 받는다. if max_index_height < y1 + h: # 최대 행의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/XHiEI/btrr7qyg2aW/x1R06JKxkuqggpbPPS10ik/img.png)
이 문제는 그래프를 보고 해당 45도 꺽이는 걸 코드로 구현할려고 하면 힘들다. 그러나 값의 좌표를 보면 열좌표는 4,5,6,5,4,3,2,1,0,1...... 행좌표는 1,2,3,4,3,2,1....... 과 같이 0~w , 0~h 까지 반복되는 것을 알 수 있다. 그러니 이를 반복문을 돌리면서 찾을려고 하면 당연히 0.15초가 시간제한이기 때문에 시간초과가 뜬다. 따라서 이를 해결하기 위해서는 수학식(점화식)을 찾아야 한다. -> 이부분이 정말 어렵다....... 지금 답을 보고도 사실 실제 시험때 바로 해당 식을 찾을 수 있을까 라는 의문이 든다. w, h = map(int, input().split()) p, q = map(int, input().split()) t = int(input()) a ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rhzKO/btrscO5WeT0/VIndrpIyKU1HjR38zjMpd1/img.png)
이 문제는 생각보다 구현하기 어려웠다. 특히 대기번호가 C * R 이랑 같아진다면 break한다는 조건을 쉬우면서 생각하기가 쉽지 않았다. C, R = map(int, input().split()) K = int(input()) array = [[0] * C for _ in range(R)] i = 0 # 행 변수 j = 0 # 열 변수 a = 0 # 대기번호를 저장할 변수 cycle = 0 # 4가지 cycle(위로,오른쪽으로,아래로,왼쪽으로)중 어느 cycle에 위치하는지 표기 col_limit_up = C - 1 # 최대 열로 갈 수 있는 인덱스 row_limit_up = R - 1 # 최대 행으로 갈 수 있는 인덱스 col_limit_down = 1 # 최소 열로 갈 수 있는 열 인덱스 row_l..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bZzlxd/btrr026d2lk/CFaVKN7miJfaCaGOkQsAK0/img.png)
처음 문제를 풀려고 할때 너어렵게 생각해서 조건을 수없이 많이 분기했다. 그랬더니 코드만 복잡해지고 너무 어려워졌다. 이 문제는 단순히 쉽게 생각하는게 답인거 같다. 1st. 두 직사각형이 만나지 않을 때를 생각한다. 2nd. 두 직사각형이 한점에서 만날 때를 생각한다. 3th. 두 직사각형이 한 변에서 만날 때를 생각한다. 4th. 두 직사각형이 내부 직사각형을 만들 때를 생각한다. 위와 같은 순서로 조건을 짠다면 모든 예외를 막을 수 있다. def solution(left_square, right_square): x1, y1, x2, y2 = left_square[0], left_square[1], left_square[2], left_square[3] p1, q1, p2, q2 = right_squ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHgO2U/btrr2s3oneo/j1ke4bQnTiAgu4qAeyXPY0/img.png)
이 문제도 보다보다 너무 답이 안보여서 힌트를 봤다. 힌트는 가장 긴 세로 및 가장 긴 가로길이를 곱하면 큰 전체 사각형의 넓이가 나온다. 여기서 가장 긴 변들과 인접해 있지 않은 변을 2개 찾은 후 그 2개의 길이를 이용해 넓이를 구하면 빈 사각형이 되므로 전체 사각형 넓이에서 그 넓이만큼 빼주면 된다. (출처: https://itcrowd2016.tistory.com/84) K = int(input()) max_height = 0 # 가장 긴 높이를 저장할 변수 max_width = 0 # 가장 긴 가로길이를 저장할 변수 max_width_index = 0 # 가장 긴 가로길이의 인덱스를 저장할 변수 max_height_index = 0 # 가장 긴 높이의 인덱스를 저장할 변수 info = [] # ..