본문 바로가기
알고리즘

[BAEKJOON] 30454 얼룩말을 찾아라!

by mAlfred 2025. 6. 27.
반응형

문제

사파리 투어를 나선 건덕이는 얼룩말에 관심이 많았다. 특히 얼룩말의 몸통에 검은 줄이 많을수록 얼룩말이 아름답다고 생각했다.

건덕이는 얼룩말들의 털 상태를 0 1로 기록한다. 0은 털이 흰 부분을, 1은 털이 검은 부분을 의미한다.

검은 줄의 개수는 연속하는 검은 부분의 개수이다. 예를 들어, 건덕이가 한 얼룩말의 털 상태를 01101110101로 기록했다면, 이 얼룩말은 4개의 검은 줄을 가지고 있다.

건덕이는 모든 얼룩말에 대한 털 상태를 기록해 두었다. 건덕이가 생각하기에 가장 아름다운 얼룩말은 몇 개의 줄을 가졌고, 그런 얼룩말이 총 몇 마리가 있을까?

입력

첫째 줄에 얼룩말의 개체수 N, 얼룩말의 몸통 길이를 나타내는 정수 L이 공백으로 구분되어 주어진다. (1≤N,L≤1000)

이어지는 N개의 줄에 건덕이가 기록한 길이 L의 얼룩말의 털 상태를 나타내는 문자열이 한 줄에 하나씩 주어진다. 문자열은 0 1로만 이루어져 있다.

출력

건덕이가 생각하는 가장 아름다운 얼룩말이 가지고 있는 검은 줄의 개수와 그런 얼룩말의 개체수를 공백으로 구분하여 출력한다.

예제 입력 1 복사

5 9
110010101
101010100
000011111
011011010
100100101

예제 출력 1 복사

4 3

11이 이어져있는 것보다 01 기준으로 갯수를 세는 것이 편하다.

딕셔너리를 이용해서 갯수 저장

 

n, l = map(int, input().split())

a = {}

for _ in range(n):
    s = '0' + input()
    cnt = 0
    for c in range(1, len(s)):
        if s[c-1] == '0' and s[c] == '1':
            cnt += 1
    
    if cnt in a.keys():
        a[cnt] += 1
    else:
        a[cnt] = 1

v = sorted(a.items(), reverse=True)
print(v[0][0], v[0][1])

 

반응형

'알고리즘' 카테고리의 다른 글

[BAEKJOON] 15633 Fan Death  (0) 2025.07.10
[BAEKJOON] 5300 Fill the Rowboats!  (0) 2025.07.02
[BAEKJOON] 25932 Find the Twins  (0) 2025.06.26
[BAEKJOON] 2863 이게 분수?  (0) 2025.06.19
[BAEKJOON] 13297 Quick Estimates  (2) 2025.06.18