본문 바로가기

코딩테스트

[백준] 10798번: 세로읽기(브론즈1, Python)

반응형

https://www.acmicpc.net/problem/10798

 

10798번: 세로읽기

총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’

www.acmicpc.net

 

문제 해결 아이디어

  1. 입력되는 문자열에 list 함수를 사용하여, 문자열을 모두 분리
  2. 문자열 5줄이 입력되므로 for문을 사용해도 되고, while문으로 입력이 다르게 들어올 경우를 대비해도 좋다.
  3. 입력된 배열들의 길이를 확인하여 가장 긴 배열의 길이를 확인한다.
  4. 최대 길이의 배열만큼 값을 확인하고 만약 더 짧은 배열이라면 except문을 사용하여 다음 배열로 이동
  5. 최종 출력값을 저장할 변수를 str으로 선언하여 추가함

소스 코드 (Python)

def txt_read(arr):
    max_length = 0
    answer = ''    
    
    for s in arr:
        if len(s) >= max_length:
            max_length = len(s)
        else: pass
    
    for idx in range(max_length):
        for arr2 in arr:
            try:
                answer += arr2[idx]
            except:
                continue
            
    return answer
            
if __name__ == '__main__':
    arr = []
    
    while True:
        try:
            arr.append(list(input()))
        except EOFError:
            break
    print(txt_read(arr))

결과

굿굿

제출 결과

try문 굉장히 강력하지만... 다른 언어로 작성할 때도 이 문제들을 풀어나갈 수 있을 지 확신이 없다.

반응형