Programming/백준
백준 2579 - 계단 오르기 (파이썬)
백준 2579 - 계단 오르기 (파이썬)
2025.02.03https://www.acmicpc.net/problem/2579전형적인 DP 문제이다..이 문제의 조건은 다음과 같다.1. 연속된 3개 계단을 모두 밟으면 안된다.2. 마지막 도착 계단은 반드시 밟아야한다.3. 계단은 한번에 한 계단 또는 두 계단씩 오를 수 있다.위 그림의 예제에서는 6개의 계단이 주어진다.S = 10, 20, 15, 25, 10, 201. 마지막 층인 20은 무조건 밟아햔다. 그럼 10을 밟게 되면 25는 못 밟으니까, 10을 버리고 25를 밟는게 최적2. 15를 밟게 되면 10, 20을 못밟으니까, 15를 버리고, 10, 20을 밟는게 이득3. 총 4개를 밟는 것이 최선, 총 75의 값을 가지게 된다.수열로써 값을 나타내면 다음과 같다.1. aN은 N번째, 최대 점수 (바로 전 ..
백준 11725 - 트리의 부모 찾기
백준 11725 - 트리의 부모 찾기
2025.02.01https://www.acmicpc.net/problem/11725 먼저 예제 1번을 바탕으로 문제를 이해하면, 71 66 33 54 12 44 7 (그리면서 풀면 더 쉽다..)2번 노드 -> 4번3번 노드 -> 6번4번 노드 -> 1번5번 노드 -> 3번6번 노드 -> 1번7번 노드 -> 4번1번부터 N번까지의 노드가 있다. 입력받은 인접한 두 노드를 트리로 완성하고, 각 노드의 부모가 누구인지 확인하는 문제이다.import syssys.setrecursionlimit(10**6)# input = sys.stdin.readline()N = int(input())adj = [[] for _ in range(N)] # 인접리스트for i in range(N - 1) : a, b = list(map(i..
백준 2606 - 바이러스
백준 2606 - 바이러스
2025.02.01https://www.acmicpc.net/problem/2606해당 문제는 그래프로도 풀어봤고, 새로운 풀이인 DFS로 풀이를 진행하였다.N = 컴퓨터의 수, M은 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수그 이후부턴, 한줄에 한쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다.해당 문제에서 DFS를 적용한 이유는 다음과 같다."단순히 그래프로도 풀이를 할수 있지만, DFS 알고리즘을 사용하면 시간복잡도가 O(2M)이 된다.'먼저 N, M을 입력받고, adj 배열에 각각 컴퓨터를 연결시킨다.N = int(input())M = int(input())adj = [[] for i in range(N)]for _ in range(M) : a, b = list(map(int,..
[백준] 4673 - 셀프 넘버 (파이썬 / C++)
[백준] 4673 - 셀프 넘버 (파이썬 / C++)
2020.04.09general = set(range(1, 10001)) change = set() for i in range(1, 10001): for j in str(i): i += int(j) change.add(i) result = general - change for i in sorted(result): print(i) #include using namespace std; bool selfnum[10001]; int main(void) { memset(selfnum, true, sizeof(selfnum)); for(int i=1; i
[백준] 15596 - 정수 N개의 합 (파이썬)
[백준] 15596 - 정수 N개의 합 (파이썬)
2020.04.09def solve(a): ans = 0 for i in a: ans += i return ans
[백준] 4344 - 평균은 넘겠지 (파이썬) (C)
[백준] 4344 - 평균은 넘겠지 (파이썬) (C)
2020.04.09import sys input = sys.stdin.readline N = int(input()) for i in range(N): list_temp = list(map(int, input().split(' '))) average = sum(list_temp[1:]) / list_temp[0] count = 0 for j in list_temp[1:]: if j > average: count += 1 print(str('%.3f' % round(count / list_temp[0] * 100, 3)) + '%') #include int main() { int num; float sum=0; float count=0; int stu_num; int score[1000]; scanf("%d", &num); ..
[백준] 8958 - OX퀴즈 (파이썬) (C++)
[백준] 8958 - OX퀴즈 (파이썬) (C++)
2020.04.09N = int(input()) for i in range(N): score = 0 cnt = 0 result = input() for j in range(len(result)): if result[j] == 'O': cnt += 1 score += cnt elif result[j] == 'X': score += 0 cnt = 0 print(score) #include #include using namespace std; int main() { int num; cin >> num; int *save_total = new int[num]; for (int i = 0; i > answer; for..
[백준] 1546 - 평균 (파이썬)
[백준] 1546 - 평균 (파이썬)
2020.04.08N = int(input()) score = list(map(int, input().split())) modify = [] for i in score: modify.append(i/max(score) * 100) print("%0.2f" % (sum(modify) / N)) 먼저 N에 과목의 개수를 입력받는다. 그후 list와 map, split을 통해서 과목의 점수를 score 리스트에 담는다. 그후 조작하고 나서 저장할 변수은 modify를 선언한다. 그후 score에서 값을 하나씩 꺼내와서 score의 가장 높은 점수로 나눠주고, 100을 곱해주고 modify 변수에 저장한다. 그후 마지막에 모든 modify 값들을 더하고 과목의 개수로 나눠주면, 조작된 평균을 구할 수 있다.
[백준] 3052 - 나머지 (파이썬)
[백준] 3052 - 나머지 (파이썬)
2020.04.08num_list = [] for i in range(10): temp = int(input()) num_list.append(temp % 42) num_list = set(num_list) print(len(num_list)) 먼저 num_list의 배열을 선언하고, 10개의 수를 입력받는다. 수를 입력 받음과 동시에 주어진 조건인 42로 나눠주고, 나머지를 num_list에 저장한다. 그 후 set 함수를 통해서 중복 값을 제거해주고, 리스트의 개수를 출력한다.
[백준] 2577 - 숫자의 개수 (파이썬)
[백준] 2577 - 숫자의 개수 (파이썬)
2020.04.08A = int(input()) B = int(input()) C = int(input()) result = A * B * C temp = str(result) for i in range(0,10): print(temp.count(str(i)))
[백준] 2562 - 최대값 (파이썬)
[백준] 2562 - 최대값 (파이썬)
2020.04.08num_list = [] for i in range(9): temp = int(input()) num_list.append(temp) max_result = max(num_list) print(max_result) print(num_list.index(max_result) + 1)
[백준] 10818 - 최소, 최대 (파이썬)
[백준] 10818 - 최소, 최대 (파이썬)
2020.04.06a = int(input()) num_list = list(map(int, input().split())) print('{} {}'.format(min(num_list), max(num_list)))
[백준] 2446 - 별 찍기 - 9 (파이썬)
[백준] 2446 - 별 찍기 - 9 (파이썬)
2020.04.05a = int(input()) for i in range(1, a + 1): print(" " * (i - 1) + "*" * (2 * (a - i) + 1)) for j in range(1, a): print(" " * (a - j - 1) + "*" * (2 * j + 1))
[백준] 2523 - 별 찍기 - 13 (파이썬)
[백준] 2523 - 별 찍기 - 13 (파이썬)
2020.04.05a = int(input()) for i in range(1, a+1): print("*" * i) for j in range(1, a): print("*" * (a - j)) a 에서 int로 선언해서 입력값을 받고 그후 별을 증가하는식으로 찍고, 다시 줄어드는 식으로 찍으면 된다.
[백준] 10817 - 세 수 (파이썬)
[백준] 10817 - 세 수 (파이썬)
2020.04.05먼저 문제는 위와 같다. 파이썬에는 내장함수로 max()와 min()이 존재하는데 왜 medium은 없는걸까? 사실 있다. import statistics a = list(input().split()) result = 0 A = int(a[0]) B = int(a[1]) C = int(a[2]) print(statistics.median([A,B,C])) import statistics print(statistics.median([10, 20, 30])) >> 20 statistics 모듈을 사용하면 median이라는 함수를 사용할수 있다. 참고 : https://woogyun.tistory.com/522 Python에서 중간값(median) 구하기 중간값이란 여러 값을 오름차순이나 내림차순으로 늘어놓았..