Python 알고리즘

백준 10996번 파이썬 풀이: 별 찍기 - 21

윤상ol 2020. 9. 1. 16:18
반응형

백준 10996번 별 찍기 - 21

 

알고리즘 분류: 구현

 

링크: https://www.acmicpc.net/problem/10996

 

 

10996번: 별 찍기 - 21

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 차례대로 별을 출력한다.

 

문제 파악

 

이 문제는 예제의 출력예시를 보고 별 찍기의 패턴을 알아내는 문제이다.

 

총 출력되는 줄의 수는 n의 2배인것으로 추정되고 별 찍기의 패턴을 보자면

 

0번인덱스 부터 시작한다고 할때 짝수 인덱스에는 별이 들어가고 홀수 인덱스에는 공백이 들어간다.

 

 

백준 2446번 파이썬 풀이: 별 찍기 - 9

백준 2446번 별 찍기 - 9 알고리즘 분류: 구현 링크: https://www.acmicpc.net/problem/2446 2446번: 별 찍기 - 9 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 문제 예제를 보고 규칙..

yoonsang-it.tistory.com

이전 글에서 말했듯이 이런 문제는 예제를 마우스로 드래그하여 공백이 있는지 확인하는 것이 중요하다.

 

예제 출력 2를 마우스로 드래그 했을 때의 모습

이런식으로 한줄마다 n개의 문자열이 들어가는 것을 확인할 수 있다.

 

 

코드

 

총 출력되는 줄의 수가 2n개이기 때문에 range를 1이상 2n+1미만으로 설정했다.

 

각 줄마다 별모양과 공백을 합친 길이가 n이기 때문에 n개의 길이를 가진 각 인덱스가 별모양인 리스트를 만든다.

 

이 문제에서 예외로 입력값이 1이 주어졌을 때는 별모양 1개를 출력해야하기 때문에 이 경우는

 

따로 조건문을 설정하여 break문을 걸어준다.

 

i가 1이상 2n+1미만이기 때문에 i가 홀수일때는 별모양으로 시작해서

 

별 공백 별 공백 순으로 반복되고

 

i가 짝수일때는 공백 별 공백 별 순으로 반복된다는 것을 알 수 있다.

 

이를 통해 조건문 안쪽에서 for문을 한번더 반복하여 조건에 맞게 star의 인덱스를 변경해준다.

 

반복문이 다 끝나면 리스트에 담겨져 있던 별과 공백들을 문자열로 합쳐준다.

 

마지막으로 합쳐진 문자열을 출력해준다.

 

이 때 왜 처음부터 문자열을 사용하지않고 불편하게 리스트를 만들어서 문자열로 바꿔줄까라는

 

의문이 생길 수 있는데 이는 파이썬에서 문자열을 더하거나 곱해주는 등의 연산은 가능할지라도

 

불가변타입인 문자열의 인덱스를 이용해서 안의 내용을 바꿔버리는것은 불가능하기 때문에

 

불편하더라도 가변타입인 리스트를 이용하여 안의 내용을 바꿔준후에 다시 문자열로 변형해주는게 중요하다.

반응형