알고리즘/입출력29 [Python] 백준 10992번: 별 찍기 - 17 풀이 소스코드1 n = int(input()) print(" "*(n-1) + "*") if(n!=1): for i in range(1,n-1): print(" " * (n-1-i) + "*" + " " * (2*i-1) + "*") print("*" * (2*n-1)) 첫째줄과 마지막줄에 별 1개와 별 2n-1 개를 따로 출력해주고, 반복문안에서 나머지 별을 처리하는 코드이다. 그러나 비효율적이다. 소스코드2 n = int(input()) for i in range(1, n+1): if(i==1 or i==n): print(" " * (n-i) + "*" * (2*i-1)) else: print(" " * (n-i) + "*" + " " * (2*(i-1)-1) + "*") 반복문 하나에서 조건문을 추가해 .. 알고리즘/입출력 2021. 1. 20. [Python] 백준 10991번: 별 찍기 - 16 풀이 소스코드 n = int(input()) for i in range(1,n+1): print(" " * (n-i) + "* " * (i-1) + "*") 자세히 보면 규칙이 보이는 간단한 문제이다. for문에서 i는 1부터 n까지 증가한다. 먼저, (n-i) 개의 공백을 찍고 난 후 "* "을 한 세트로(별과 공백) (i-1) 번 출력한다. 그리고 마지막 별은 공백 없이 별만 따로 추가해주면 된다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2446번 : 별 찍기 - 9 풀이 소스코드 n = int(input()) for i in range(n, 0, -1): print(" " * (n-i) + "*" * (2*i-1)) for j in range(2,n+1): print(" " * (n-j) + "*" * (2*j-1)) 먼저 별을 내림차순으로 출력하는 for문을 먼저 작성한다. 첫 번째 for문에서는 반복문을 한 번 돌 때마다 i가 n부터 1까지 감소한다. 그리고 (n-i)개의 공백과 2(i-1) 개의 별을 출력한다. 두 번째 for문에서는 j가 2부터 n까지 증가하면서 반복문을 돈다. (1은 출력할 필요가 없으므로) 그리고 (n-j)개의 공백과 2(j-1)개의 별을 출력한다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2522번: 별 찍기 - 12 풀이 소스코드 n = int(input()) for i in range(1,n+1): print(" " * (n-i) + "*" * i) for j in range(1,n): print(" " * j + "*" * (n-j)) 별이 오름차순과 내림차순으로 출력되어있다면 두 개의 다른 반복문을 이용해 구현해야한다. 첫 번째 for문에서는 증가하는 i에 따라서 한 줄에 (n-i) 개의 공백과 i 개의 별을 출력해준다. 두 번째 for문에서는 한 줄에 j개의 공백과 (n-j) 개의 별을 출력해준다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2445번: 별 찍기 - 8 풀이 소스코드 n = int(input()) for i in range(1,n+1): print("*" * i + " " * 2*(n-i) + "*" * i) for j in range(1,n): print("*"* (n-j) + " " * 2*j + "*" * (n-j)) 먼저 첫 번째 for문에서는 1부터 n까지의 별의 개수를 늘려나가며 행을 출력한다. 각 행은 i개의 별 + 2 * (n-i) 개의 공백 + i 개의 별로 이루어져있다. 두 번째 for문에서는 반대로 별의 개수를 줄여나가며 출력한다. 각 행은 (n-j) 개의 별 + 2*j 개의 공백 + (n-j) 개의 별로 이루어져있다. 직접 종이에 그려보며 규칙을 찾으면 어렵지 않은 별 찍기 문제이다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2442번: 별 찍기 - 5 풀이 소스코드 n = int(input()) for i in range(1,n+1): print(" "*(n-i) + "*" * (2*i-1)) 처음에 출력 형식이 잘못되었다길래 아무리 해도 틀린게 없어 보여 구글링 해보니 별의 끝에는 공백을 추가하는 것이 아니였다... 난 바보야.... 나는 양쪽 공백을 대칭으로 맞추는 문제인 줄 알았는데.. ㅋㅋㅋㅋㅋ 이래서 예제 입출력은 자세히 봐야해 암튼 앞에 공백을 (n-i) 만큼 추가하고 별은 2*i-1 만큼 출력해주면 된다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2441: 별 찍기 -4 풀이 소스코드 n = int(input()) for i in range(n): print(" "*i + "*" * (n-i)) 별을 n부터 1까지 역순으로 우측정렬로 출력하는 문제이다. 한 줄에 별의 갯수는 (n-i) 개이고, 그 앞에 공백의 갯수 i 개 를 먼저 출력해주면 된다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2440 풀이 소스코드 n = int(input()) for i in range(n): print("*" * (n-i)) 이번에는 1부터 n까지가 아닌, n부터 1까지 역순으로 별을 출력하는 문제이다. i가 0부터 n-1까지 증가하므로 한 반복문에서 별을 (n-i) 개 출력하면 된다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2439 풀이 소스코드 n = int(input()) for i in range(1,n+1): print(' ' * (n-i) + "*" * i) 저번 문제와 비슷하나, 이번에는 별을 오른쪽 정렬로 출력한다. 따라서 별을 출력하기 전에 (n-i) 만큼의 공백을 더해주면 된다. 알고리즘/입출력 2021. 1. 20. [Python] 백준 2438 풀이 소스코드 1 n = int(input()) for i in range(n): for j in range(i+1): print("*",end='') print() 소스코드1은 보통 다른 언어에서 사용하는 방법이다. 이중 for문을 이용해 밖에 있는 for문은 행 갯수 만큼(n) 반복하고 안에 있는 for문은 한 행에서 몇 개의 별을 찍을지 즉 열 갯수(i+1) 만큼 반복한다. 파이썬은 print를 하면 기본으로 end에 개행('\n') 이 들어간 상태이므로, 한 줄에 입력해주기 위해선 end에 빈 문자열을 지정해줘야 한다. 그리고 한 줄에 별을 다 찍고 다음 행으로 넘어갈 때 그냥 print()을 써줌으로써 개행이 추가된다. 소스코드 2 n = int(input()) for i in range(1,n+1).. 알고리즘/입출력 2021. 1. 20. [Python] 백준 10818 풀이 소스코드1 n = int(input()) arr = list(map(int,input().split())) max = arr[0] min = arr[0] for i in range(n): if arr[i] > max: max = arr[i] if arr[i] < min: min = arr[i] print(min,max) 소스코드1은 반복문을 돌면서 모든 값을 최소, 최대값과 비교하는 방법이다. 입력한 값 만큼의 반복문을 돌면서, arr[i] 가 max 보다 크면 max 값 갱신, min 보다 작으면 min 값을 갱신한다. 소스코드2 n = int(input()) arr = list(map(int,input().split())) print('{} {}'.format(min(arr), max(arr))) 소.. 알고리즘/입출력 2021. 1. 19. [Python] 백준 8393 풀이 소스코드 sum = 0 n = int(input()) for i in range(n): sum+=(i+1) print(sum) 1부터 입력한 n까지의 합을 구하는 간단한 문제이다. 알고리즘/입출력 2021. 1. 19. 이전 1 2 3 다음