백준 10996번 파이썬 풀이: 별 찍기 - 21
백준 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
이전 글에서 말했듯이 이런 문제는 예제를 마우스로 드래그하여 공백이 있는지 확인하는 것이 중요하다.
이런식으로 한줄마다 n개의 문자열이 들어가는 것을 확인할 수 있다.
코드
총 출력되는 줄의 수가 2n개이기 때문에 range를 1이상 2n+1미만으로 설정했다.
각 줄마다 별모양과 공백을 합친 길이가 n이기 때문에 n개의 길이를 가진 각 인덱스가 별모양인 리스트를 만든다.
이 문제에서 예외로 입력값이 1이 주어졌을 때는 별모양 1개를 출력해야하기 때문에 이 경우는
따로 조건문을 설정하여 break문을 걸어준다.
i가 1이상 2n+1미만이기 때문에 i가 홀수일때는 별모양으로 시작해서
별 공백 별 공백 순으로 반복되고
i가 짝수일때는 공백 별 공백 별 순으로 반복된다는 것을 알 수 있다.
이를 통해 조건문 안쪽에서 for문을 한번더 반복하여 조건에 맞게 star의 인덱스를 변경해준다.
반복문이 다 끝나면 리스트에 담겨져 있던 별과 공백들을 문자열로 합쳐준다.
마지막으로 합쳐진 문자열을 출력해준다.
이 때 왜 처음부터 문자열을 사용하지않고 불편하게 리스트를 만들어서 문자열로 바꿔줄까라는
의문이 생길 수 있는데 이는 파이썬에서 문자열을 더하거나 곱해주는 등의 연산은 가능할지라도
불가변타입인 문자열의 인덱스를 이용해서 안의 내용을 바꿔버리는것은 불가능하기 때문에
불편하더라도 가변타입인 리스트를 이용하여 안의 내용을 바꿔준후에 다시 문자열로 변형해주는게 중요하다.