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 | 31 |
Tags
- 백준 2012
- 백준2116
- 백준 13901
- 백준 4803
- 백준 1713
- 백준 최소비용 구하기
- 예쁜타일링
- 백준 특정거리의도시찾기
- 백준 주사위 쌓기
- 파이썬
- 백준13164
- 백준 10157
- 알고리즘
- 백준 2659
- 백준2823
- 백준 5212
- 백준 트리
- 백준 후보 추천하기
- 눈높이개발
- Python
- 백준 지구 온난화
- 백준 유턴 싫어
- 백준 로봇
- 백준 등수매기기
- 백준18230
- 백준18352
- 14247
- 백준 십자카드 문제
- 백준 자리배정
- 백준
Archives
- Today
- Total
개발 기록
[알고리즘|파이썬] 백준 3085 사탕 게임 본문
문제 링크: https://www.acmicpc.net/problem/3085
📌 문제 탐색하기
시간 제한: 1초
메모리 제한: 128 MB
📌 풀이하기
예제 1.
3
CCP
CCP
PPC
비교할 대상을 골라 자리 교환을 한 후, 최대 길이가 얼마인지 확인을 한다.


📌 코드 설계하기
1. input을 받는다
2. 교환할 대상을 찾아 교환을 한다.
- 가로 교환
- 세로 교환
3. 최대 길이가 얼마인지 확인한다.
4. 전체 경우의 수 중 최대 길이를 출력한다.
📌 정답 코드
n = int(input())
nmap = [[0 for _ in range(n)] for _ in range(n)]
max_count = 0
def check_count():
max_row_count = 0
for i in range(n):
row_count = 1
for j in range(n - 1):
if nmap[i][j] == nmap[i][j + 1]:
row_count += 1
if j == n-2:
max_row_count = max(row_count, max_row_count)
else:
max_row_count = max(row_count, max_row_count)
row_count = 1
max_col_count = 0
for i in range(n):
col_count = 1
for j in range(n - 1):
if nmap[j][i] == nmap[j + 1][i]:
col_count += 1
if j == n-2:
max_col_count = max(max_col_count, col_count)
else:
max_col_count = max(max_col_count, col_count)
col_count = 1
count = max(max_row_count, max_col_count)
return count
for i in range(n):
line = input()
for j in range(n):
nmap[i][j] = line[j]
# 가로 교환
for i in range(n - 1):
for j in range(n):
if nmap[j][i] != nmap[j][i + 1]:
# 00 01 / 10 11 / 20 21
old_a = nmap[j][i]
old_b = nmap[j][i + 1]
nmap[j][i] = old_b
nmap[j][i + 1] = old_a
now = check_count()
max_count = max(now, max_count)
nmap[j][i] = old_a
nmap[j][i + 1] = old_b
# 세로 교환
for j in range(n):
for i in range(n - 1):
if nmap[i][j] != nmap[i + 1][j]:
# 00 10 / 10 20 / 01 11
old_a = nmap[i][j]
old_b = nmap[i + 1][j]
nmap[i][j] = old_b
nmap[i + 1][j] = old_a
now = check_count()
max_count = max(now, max_count)
nmap[i][j] = old_a
nmap[i + 1][j] = old_b
print(max_count)'알고리즘' 카테고리의 다른 글
| [알고리즘|파이썬] 백준 13901 로봇 (0) | 2025.02.22 |
|---|---|
| [알고리즘|파이썬] 백준 2659 십자카드 문제 (1) | 2025.02.20 |
| [알고리즘|파이썬] 백준 2823 유턴 싫어 (0) | 2025.02.20 |
| [알고리즘|파이썬] 백준 2012 등수 매기기 (0) | 2025.02.19 |
| [알고리즘|파이썬] 백준 4803 트리 (0) | 2025.02.18 |