Baekjoon

BOJ

[백준/BOJ] python 5800번 성적 통계

언어: python 번호: 5800 제목: 성적 통계 등급: 실버 5 ​ 풀이 과정: 학급의 수 k, 학생의 수 n, 수학 성적 배열 lst를 입력받는다. 성적을 정렬하고, 예제에 맞춰 학급 번호, 최댓값, 최솟값을 출력한다. 그리고 각 리스트간의 차이를 구해 가장 큰 값을 출력한다. ​ ​ 코드: # 5800 import sys input = sys.stdin.readline k = int(input()) for i in range(k): n,*lst=map(int,input().split()) lst.sort() print("Class {}".format(i+1)) print("Max {}, Min {}, ".format(lst[-1], lst[0]), end='') for i in range(n-1..

BOJ

[백준/BOJ] python 2921번 도미노

언어: python 번호: 2921 제목: 도미노 등급: 브론즈 3 ​ 풀이 과정: 크기가 n인 도미노 세트를 n의 값에 따라 나눈다고 생각하고 각 도미노에 있는 점의 개수는 다음과 같다. f(0) = (0, 0) -> 1개 f(1) = f(0) + (1, 0) + (1, 1) -> f(0) + 1 + 2 개 f(2) = f(1) + (2, 0) + (2, 1) + (2, 2) -> f(1) + 2 + 3 + 4 개 f(3) = f(2) + (3, 0) + (3, 1) + (3, 2) + (3, 3) -> f(2) + 3 + 4+ 5 개 이때 수열의 합을 이용하여 i번째 도미노 세트에 있는 점의 개수의 합은 (3*i**2+3*i)//2임을 알 수 있다. 크기가 n인 도미노 세트에 있는 모든 점의 개수의 ..

BOJ

[백준/BOJ] python 1149번 RGB거리

언어: python 번호: 1149 제목: RGB거리 등급: 실버1 ​ 풀이 과정: ​DP(동적계획법)으로 풀 수 있다. 집의 색깔은 빨강, 초록, 파랑 중에 하나로 칠해야 한다. 이때 i번째(1 i-1번째 집이 초록 또는 파랑 중에 비용이 적은 것 i번째 집은 초록 > i-1번째 집이 파랑 또는 빨강 중에 비용이 적은 것 으로 칠하면 된다. 2차원 배열 DP[n][3]을 만들어 n번째 열에 n번째 집을 칠하는 색깔에 따라 생기는 비용의 총합을 저장해 가장 작은 값을 출력하면 된다. 예제 입력 1 3 26 40 83 49 60 57 13 89 99 dp[n][3] 1번째 2번째 3번째 모든 집을 칠하는 비용 빨강 26 min(40, 83) + 49 = 89 min(96, 73) + 13 = 86 86 초..

BOJ

[백준/BOJ] python 1912번 연속합

언어: python 번호: 1912 제목: 연속합 등급: 실버 2 풀이 과정: DP를 이용한다. 숫자들을 리스트로 입력받고, for문으로 리스트를 돌면서 최댓값만 저장한다. ​dp[i] =max(arr[i], dp[i-1] + arr[i]) 점화식은 위와 같다. 연속된 합을 구해야하기 때문에 여태까지 더한 값보다 더 큰 값을 만나면, 최댓값이 바뀌는 것이다. 이렇게 모인 최댓값들 중에 가장 큰 값을 출력하면 된다. ​ 코드: # 1912 n = int(input()) arr = list(map(int, input().split()) dp = [0] * n dp[0] = arr[0] for i in range(1, n): dp[i] = max(arr[i], dp[i-1] + arr[i]) print(max..

BOJ

[백준/BOJ] python 2447번 별 찍기 - 10

언어: python 번호: 2447 제목: 별 찍기 - 10 등급: 골드 5 ​ ​ 풀이 과정: 재귀를 이용해서 푼다. 크기 3의 패턴을 array로 만든다. ​ ​ 코드: # 2447 n = int(input()) arr = ["***", "* *", "***"] cnt = -1 while n: cnt += 1 n //= 3 for i in range(1, cnt): l1 = [j*3 for j in arr] l2 = [j+" "*3**i+j for j in arr] arr = [*l1, *l2, *l1] print("\n".join(arr)) 메모: 결국 못 풀고 답지 봤는데 이해는 되도 내가 짜기는 어렵다... 재귀함수 개념은 이해하고 피타고라스채는 익숙해졌지만 그림 그리는 건 문제를 많이 안 풀어..

BOJ

[백준/BOJ] python 10988번 팰린드롬인지 확인하기

언어: python 번호: 10988 제목: 팰린드롬인지 확인하기 등급: 브론즈 2 ​ 풀이 과정: 문자열은 하나의 리스트이기 때문에 n번째 글자와 끝에서 n번째 글자를 비교해서 모두 같으면 팰린드롬이고, 틀린 것이 하나라도 있으면 팰린드롬이 아니다. 시간을 단축하기 위해 0부터 n//2번째 글자까지 비교한다. ​ ​ 코드: # 10988 check = 1 s = input() n = len(s) for i in range(n//2): if s[i] != s[n-i-1]: check = 0 break print(check)

BOJ

[백준/BOJ] python 10448번 유레카 이론

언어: python 번호: 10448 제목: 유레카 이론 등급: 브론즈 1 ​ ​ 풀이 과정: n 번째 요소에 Tn의 값이 들어있는 리스트 lst를 만든다. 3중 for 문으로 lst 값의 요소를 더하면서 유레카 이론이 성립하면 값을 출력한다. ​ ​ 코드: 1번째) 224ms # 10448 lst = [0]*46 def func(n): for i in range(1, 46): for j in range(i, 46): for k in range(j, 46): if lst[i] + lst[j] + lst[k] == n: return 1 return 0 for i in range(1, 46): lst[i] = lst[i-1]+i t = int(input()) for _ in range(t): n = int(..

BOJ

[백준/BOJ] python 2217번 로프

언어: python 번호: 2217 제목: 로프 등급: 실버 4 ​ ​ 풀이 과정: 로프를 모두 사용하는 게 아니라 몇 개만 골라서 사용할 수 있고, 각각의 로프는 w/k만큼의 중량이 걸리게 되니 최대 중량을 구하기 위해서는 최대 중량이 큰 로프부터 골라서 써야 한다. 숫자를 입력받아 큰 것부터 정렬하고, 고른 로프 중 가장 최대 중량이 낮은 로프* 로프의 수가 전체의 최대 중량이다. 로프를 하나씩 추가하면서 비교하면서 최댓값을 구한다. ​ ​ 코드: # 2217 import sys IN = sys.stdin.readline n = int(IN()) rope = [0]*10001 for _ in range(n): rope[int(IN())] += 1 m, s = 0, 0 for i in range(100..

kyj0015
'Baekjoon' 태그의 글 목록