Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 백준 13460 Python
- Kotlin in action 6장
- 스프링 핵심 원리 - 기본편
- Kotlin in action 3장
- 스프링 컨테이너와 스프링 빈
- 13460 구슬탈출 2
- kotlin in action 정리
- 백준 20055 컨베이어 벨트 위의 로봇
- Kotlin
- 컨베이어 벨트 위의 로봇 Python
- Python
- 스프링 핵심 원리 이해
- 코틸린인액션
- 자바 ORM 표준 JPA 프로그래밍 7장
- Kotlin in action 10장
- 스프링 핵심 원리
- 기능개발 python
- Kotlin in action 5장
- 객체 지향 설계와 스프링
- 코틀린
- KotlinInAction
- spring
- 싱글톤 컨테이너
- 20055
- 백준
- 고급매핑
- 7장 고급매핑
- 코틀린인액션
- Kotlin In Action
- 20055 컨베이어 벨트 위의 로봇
Archives
- Today
- Total
기록하는 습관
[삼성SW기출문제] 16234번 인구 이동 본문
1. 문제 링크
https://www.acmicpc.net/problem/16234
16234번: 인구 이동
N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모
www.acmicpc.net
2. 코드
- 문제 소요 시간: 1시간 37분
import sys
sys.setrecursionlimit(100000)
N, L, R = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(N)]
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
answer = 0
def dfs(x, y):
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < N and 0 <= ny < N and not visit[nx][ny]:
if L <= abs(graph[x][y] - graph[nx][ny]) <= R:
visit[nx][ny] = True
union.append([nx, ny])
dfs(nx, ny)
while True: # 인구 없을 때까지 지속
visit = [[False for _ in range(N)] for _ in range(N)]
flag = True
for i in range(N):
for j in range(N):
union = []
if not visit[i][j]:
union.append([i, j]) # 시작 나라 저장
visit[i][j] = True
dfs(i, j)
if len(union) > 1:
flag = False
value = sum(graph[x][y] for x, y in union) // len(union)
for x, y in union:
graph[x][y] = value
if flag:
break
answer += 1
print(answer)
3. 문제 풀이
- 적용 알고리즘: DFS
- 포인트: 재귀로 구현하려다 보니, total, count 관련해서 제대로 되지 않았음.
+ BFS로 풀어보기!!
'알고리즘 > [문제풀이] 삼성 SW 기출문제, 모의고사' 카테고리의 다른 글
| [삼성SW기출문제] 14891번 톱니바퀴 (0) | 2022.09.15 |
|---|---|
| [삼성SW기출문제] 14503번 로봇 청소기 (0) | 2022.09.14 |
| [삼성SW기출문제] 14888번 연산자 끼워넣기 (0) | 2022.09.14 |
Comments