본문 바로가기

백준5

[백준-파이썬] python, 2563번 색종이 (실버5) https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 처음에 이 문제를 접했을 때는 어렵게 생각했어요. 도화지 크기가 100 * 100 이니까 면적을 먼저 구하고 거기서 색종이 면적을 빼고, 다음 색종이의 면적도 빼고, 그럼 첫번째 색종이와 두번째 색종이가 서로 겹치는 면적은 두번 빼는 게 되니까 한번은 다시 더해주고..... 몇시간을 생각하다가 포기했었어요. 근데 한참 묵혀뒀다가 오늘 이 문제를 다시 열어보니, 문제를 보자마자!! 조금 더 쉬운 방법.. 2023. 6. 25.
[백준-파이썬] 2775번 문제. 부녀회장이 될테야 (브론즈1) https://www.acmicpc.net/problem/2775 case = int(input()) for _ in range(case): k = int(input()) n = int(input()) # 0층 인원수 배열 만들기 arr = [level for level in range(1, n+1)] # K층까지 돌고 for i in range(k): # 각층의 n호까지 돌기 for j in range(1, n): # 모든 층의 1호[인덱스0]에는 1명이 살고 있으므로 arr[0]은 필요 X arr[j] += arr[j-1] # 마지막 호실 인원 출력 print(arr[-1]) 케이스 수는 다시 사용되지 않으므로 변수를 할당해줄 필요가 없습니다. 그래서 for _ in ~ 으로 작성합니다. 그리고 0층.. 2023. 6. 23.
[백준-파이썬] 2441번 별 찍기-4 (브론즈3) 간단한 문제입니다. 앞에 몇칸을 띄울 것인가, 별은 몇개를 찍을 것인가 를 생각해보면 됩니다. 공백 별 0 5 1 4 2 3 3 2 4 1 공백은 차례로 증가하는 i만큼 찍으면 되겠고, 별은 그 수를 역산하는 n-i로 찍으면 되겠네요. n = 5, i = 0,1,2,3,4 5-0 = 5 5-1 = 4 5-2 = 3 5-3 = 2 5-4 = 1 이렇게 별은 내려오면서 5개부터 1개까지 찍힙니다. n = int(input()) for i in range(0, n): print(" " * i, "*" * (n-i), sep="") 컴마로 구분해주면 요소 사이에 무조건 공백이 생기기 때문에 sep="" 속성으로 공백과 별 사이의 컴마로 인한 공백을 없애주었습니다. 2023. 6. 23.
[백준-파이썬] 10817번 세 수 (브론즈3) 1. 내 코드 nums = list(map(int, input().split())) for i in range(0, len(nums)): for j in range(i + 1, len(nums)): if nums[i] > nums[j]: nums[i], nums[j] = nums[j], nums[i] print(nums[1]) 저는 번거롭긴 하지만 버블소트로 짜봤어요. 배운거 기억 더듬어볼 겸... 2. 숏코드 print(sorted(input().split(),key=int)[1]) 풀이 후 다른 분의 숏코드를 보고 놀랐습니다. 이런 방법이 있었군요! sorted로 int 기준으로 배열값들을 순서대로 정렬한 후, 가운데 값인 [1] 가져오네요. 결과값이 string이긴 하지만 채점에는 문제가 되지 않.. 2023. 6. 21.
[백준-파이썬] 10872번 팩토리얼 (python) https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 팩토리얼이란? 팩토리얼이란, n부터 1까지 -1을 하며 곱한 수입니다. n!의 형태로 표현됩니다. 즉 3! 이라면, 3 * 2 * 1 = 6이 되겠습니다. 주의) 0!은 1입니다. 왜냐하면 ... 10팩토리얼이라 하면 아래와 같겠죠. 10! = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 그럼 풀이 나갑니다. :) 1. 재귀함수로 푼 코드 n = int(input()) def facto(n): if n == 0: return 1 return n * facto(n -1) pri.. 2023. 6. 21.