일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백준
- data structure
- algogritim
- language
- LeetCode
- 알고리즘
- db
- OS
- 데이터베이스
- 프로그래머스
- Database
- D2
- 법의학
- 자료구조
- SW Expert Academy
- network
- 문제풀이
- swea
- 운영체제
- BOJ
- 네트워크
- 감상문
- cs
- D3
- Computer Science
- 독서
- c++
- 재테크/투자
- algorithm
- Programmers
Archives
- Today
- Total
선택은 나의 것
[BOJ 백준] 2799번 블라인드 본문
문제
BOJ 2799 : https://www.acmicpc.net/problem/2799
2799번: 블라인드
문제 봄이 오고 있다. 해는 높이 떠서 환하게 빛나고 있다. 사람들은 햇볕을 가리기 위해 블라인드를 내린다. 상근이는 이웃들이 무엇을 하는지를 염탐하고, 이것에 대해서 뒷담화를 하는 주부��
www.acmicpc.net
접근
나는 아파트의 상태를 한 줄씩 입력받아 그 줄에서 펼쳐진 블라인드의 개수('*'의 수 / 4)를 확인했다. 아파트는 제일 위의 벽('######')상태가 있고 그 밑으로 4칸 동안 창문의 상태가 주어지는데 이는 현재 줄의 번호를 5로 나눈 나머지 값으로 창문의 몇 번째 줄인지를 확인했다. (그래야 블라인드가 몇 칸이나 펼쳐져 있는지 알 수 있기 때문) 만약 이전 줄과 다음 줄의 상태(블라인드가 펼쳐진 상태)가 다르게 나타난다면 어느 집의 블라인드가 더 이상 펼쳐져 있지 않음을 의미한다. 즉 어느 집은 이전 길이만큼의 블라인드만 펼쳐져 있다는 뜻이다. 이런 식으로 계산해서 풀었는데, 사실 이는 2차원 배열로 받아서 푸는 법을 잘 몰라서 이렇게 한 줄씩 받아서 푸는 방법을 생각해냈었다.사실 한 줄씩 string으로 받아 빈 배열에 append해주면 충분히 2차원 배열로서 접근이 가능하고, 더 쉽게 풀 수 있다.
코드
n = list(map(int, input().split()))
counter = [0, 0, 0, 0, 0]
c = 0
for i in range(n[0] * 5):
w = input()
if i % 5 == 0:
c = 0
continue
if c == n[1]:
continue
wd = n[1] - w.count("*") / 4 - c
if i % 5 == 1:
counter[0] += wd
c += wd
elif i % 5 == 2:
counter[1] += wd
c += wd
elif i % 5 == 3:
counter[2] += wd
c += wd
elif i % 5 == 4:
counter[3] += wd
c += wd
counter[4] += n[1] - c
w = input()
for i in counter:
print(int(i), end=" ")
'☽ Algorithm > BOJ' 카테고리의 다른 글
[BOJ 백준] 11779번 최소비용 구하기 2 (0) | 2020.08.07 |
---|---|
[BOJ 백준] 2178번 미로 탐색 (python) (0) | 2020.08.06 |
[BOJ 백준] 1822번 차집합 (python) (0) | 2020.08.06 |
[BOJ 백준] 4344번 평균은 넘겠지 (python) (0) | 2020.08.04 |
[BOJ 백준] 1668번 트로피 진열 (python) (0) | 2020.08.03 |
Comments