6098 - 성실한 개미 1) 문제 해결 아이디어 탈출 조건은 크게 3가지이다. 1) 먹이를 찾았을 경우 2) 맨 아래, 오른쪽에 위치한 경우 3) 오른쪽, 아래쪽이 벽인 경우 2) 소스코드 (풀이1) 내 풀이 시작 지점은 이미 방문한 것으로 처리하고 시작한다. 방향벡터를 설정하여 구현하였다. # 맵(0: 길, 1: 벽/장애물, 2: 먹이) # 10 * 10 맵 입력 maze = [list(map(int, input().split())) for _ in range(10)] x , y = 1, 1 # 현재 좌표(시작 지점으로 초기화) maze[x][y] = 9 # 현재 좌표 방문 표시 # 이동 방향 (오른쪽, 아래쪽) dx = [0, 1] dy = [1, 0] while True: # 오른쪽 좌표 nx =..
6097 - 설탕과자 뽑기 h, w = map(int, input().split()) # 세로, 가로 n = int(input()) # 막대 개수 board = [[0] * w for _ in range(h)] # h * w 2차원 리스트 # 막대 놓기 for i in range(n): l, d, x, y = map(int, input().split()) # 막대 길이, 방향(0: 가로, 1: 세로), 좌표(x, y) if(d == 0): # 가로 막대 for j in range(l): board[x-1][y-1+j] = 1 elif(d == 1): # 세로 막대 for j in range(l): board[x-1+j][y-1] = 1 # 보드 출력 for i in range(h): for j in ra..
6095 - 바둑판에 흰 돌 놓기 n = int(input()) board = [[0] * 19 for _ in range(19)] # 19 * 19 2차원 리스트 for i in range(n): x, y = map(int, input().split()) board[x-1][y-1] = 1# 바둑돌 위치 체크 for i in range(19): for j in range(19): print(board[i][j], end=" ") print() 리스트 컴프리헨션 대괄호 안에 조건문, 반복문을 적용해 초기화하는 방식 [ [0] * m for _ in range(n) ]
6094 - 이상한 출석 번호 부르기3 (풀이1) min() 함수로 최소값 찾기 n = int(input()) num = map(int, input().split()) #최소값 구하기 print(min(num)) min() 데이터들 중 최솟값 반환 max() 데이터들 중 최댓값 반환 (풀이2) for문을 이용한 정석적인 방식 n = int(input()) randomNum = list(map(int, input().split())) # 랜덤 출석 번호 min = 1e9 #최대값으로 설정 for i in range(n): if(randomNum[i] < min): min = randomNum[i] print(min)
6093 - 이상한 출석 번호 부르기2 (풀이1) for문 range()를 이용한 방식 n = int(input()) num = input().split() #리스트 for i in range(n-1, -1, -1): print(num[i], end=" ") ''' for i in range(n): print(num[n-1-i], end=" ") ''' range(n-1, -1, -1) 인 이유는? 역순 출력을 위해 마지막 인덱스 (n-1)을 시작점으로 하고 증감을 -1 로 한다. (n-1) ~ 0 인덱스에 대해 반복을 위해서 끝을 0이 아닌 -1로 해야한다. range(시작, 끝, 증감): 시작 ~ 끝 이전 인덱스 까지 증감 반복 (풀이2) reverse() / reversed()함수를 이용한 리스트 ..
6092 - 이상한 출석 번호 부르기1 countNum = [0] * 23 # 불린 번호를 카운팅할 리스트 n = int(input()) randomNum = list(map(int, input().split()))# 불린 번호 리스트 # 불린 번호 카운팅 for i in range(n): countNum[randomNum[i] - 1] += 1 for i in range(23): print(countNum[i], end = " ") map 함수 반환 값은 map 객체이므로 리스트나 튜플로 이용할 경우, 형변환이 필요하다!
6091 - 함께 문제 푸는 날 최소공배수는 어떻게 구할까? 1. 유클리드 호제법 - a* b를 a, b의 최대공약수로 나눈 몫 = 최소 공배수 2. 반복문을 이용한 일반적인 방식 어떠한 수(n)을 각 수들로 나눴을 때 나머지가 모두 0이 될 때가지 반복했을 때 n = 최소 공배수 (풀이1) math 라이브러리 gcd()함수 이용 import math # 최소공배수 구하는 함수 def lcm(a, b): return int(a * b / math.gcd(a, b)) a, b, c = map(int, input().split()) lcm = (lcm(lcm(a, b), c)) print(lcm) 나누기(/)의 반환값은 float형이기 때문에 int로 형변환을 해준 후 lcm()인자로 넣어주어야 한다! ※ ..