728x90
반응형
핵심 포인트
- 2차원 배열
- 리스트 pop 함수
- 기추 구현 능력
제출코드
A = [input() for _ in range(5)]
S = []
while len(A) != 0:
S.append(A[0][0])
if len(A[0]) > 1: A.append(A[0][1:])
A.pop(0)
print(''.join(map(str, S)))
해설
먼저, 세로로 읽을 5개의 문자열을 하나의 리스트에 저장해놓습니다. 제가 생각한 알고리즘은 다음과 같습니다.
STEP1. A의 첫번째 문자열의 첫번째 문자를 S에 저장
STEP2-1. 만약, A의 첫번째 문자열의 길이가 1보다 크다면 첫번째 문자를 제외한 문자열을 A에 append하여 마지막 요소로 추가
STEP2-2. 만약, A의 첫번재 문자열의 길이가 1보다 작다면 append 하지 않음
STEP3. A의 첫번째 문자열 제거
이제 STEP1-3까지 예시를 이용해서 한번 반복해보겠습니다. 예시는 문제에 나온 예제 입력 1을 기준으로 설명하도록 하겠습니다. 그러면 A는 다음과 같습니다.
---iteration 0---
A = ['ABCDE', 'abcde', '01234', 'FGHIJ', 'fghij']
S = []
그러면 STEP1에 의해 S에는 A의 첫번째 문자열 'ABCDE'의 첫번째 문자인 'A'가 추가되어 S = ['A']가 됩니다. 그러면 'ABCDE'의 길이가 5이므로 첫번째 문자를 제외한 나머지 문자열인 'BCDE'를 A의 마지막 요소에 추가한 뒤 첫번째 요소를 제거합니다.
---iteration 1---
A = ['abcde', '01234', 'FGHIJ', 'fghij', 'BCDE']
S = ['A']
이 과정을 몇 번 반복하면 다음과 같이 진행됩니다.
---iteration 2---
A = ['01234', 'FGHIJ', 'fghij', 'BCDE', 'bcde']
S = ['A', 'a']
---iteration 3---
A = ['FGHIJ', 'fghij', 'BCDE', 'bcde', '1234']
S = ['A', 'a', '0']
---iteration 4---
A = ['fghij', 'BCDE', 'bcde', '1234', 'GHIJ']
S = ['A', 'a', '0', 'F']
---iteration 5---
A = ['BCDE', 'bcde', '1234', 'GHIJ', 'ghij']
S = ['A', 'a', '0', 'F', 'f']
그러면 최종적으로 A는 비워지게 되고 S에는 세로를 기준으로 적은 문자들이 포함되므로 join 함수를 이용해서 하나로 합쳐서 출력하면 됩니다.
참고자료 및 그림출처
728x90
반응형
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 2745번: 진법 변환 (0) | 2023.05.22 |
---|---|
BOJ 2563번: 색종이 (0) | 2023.05.21 |
BOJ 2566번: 최댓값 (0) | 2023.05.20 |
BOJ 2738번: 행렬 덧셈 (0) | 2023.05.20 |
BOJ 25206번: 너의 평점은 (0) | 2023.05.20 |