본문 바로가기

전체글61

10844번 쉬운 계단 수 2021. 8. 20.
11724번 연결 요소의 개수 이 문제는 DFS 알고리즘을 이용하여 풀었다. 문제풀이 생각보다 단순한 문제다. 입력받은 그대로 그래프를 생성하고, DFS로 그래프를 탐색해서 연결되어 있는 요소가 몇개 인지 확인해서 개수를 출력하면 되는 문제 이다. 코드 import sys sys.setrecursionlimit(10**5) def graph(x): visit[x] = 1 for y in range(1, N + 1): if arr[x][y] == 1 and visit[y] == 0: graph(y) N, M = map(int, sys.stdin.readline().split()) arr = [[0] * (N + 1) for _ in range(N + 1)]; visit = [0 for _ in range(N + 1)] count = 0.. 2021. 8. 20.
16953번 A -> B 이 문제는 그리디 알고리즘을 이용해 풀었다. 문제풀이 정수 A를 B로 변환하는 문제이다. 처음에는 A를 증가 시키면서 변환하는 코드를 짰지만 B를 감소 시키면서 A를 찾아가는 것이 좀 더 이해하기 쉬운 코드로 짤 수 있었다. 1. A와 B의 값을 비교하여 A가 더 크지 않은지 그리고 연산 가능한 조건들을 충족 하는지를 확인한다. 충족하지 않는다면 -1의 값을 출력한다. 2. B를 2로 나누었을 경우 나머지가 0이었을때, 나누어진 몫을 저장한다. 1번째 조건에 따른다. 3. B를 10으로 나누었을 경우 나머지가 1이었을 때, 1을 제거해주고 몫을 저장한다. 2번째 조건에 따른다. 4. 그리고 A와 B의 값이 같을때 반복을 중단하고 최종 값을 출력한다. 이때 한가지 조심해야 할 것이 있는데 처음부터 A와 B.. 2021. 8. 20.
10819번 차이를 최대로 이 문제는 브루트포스 알고리즘을 이용한다. 문제풀이 일단 이 문제는 모든 정수의 순서를 찾아 계산하는 방식으로 브루트포스 알고리즘을 이용해서 풀어보았다. 먼저 값들을 입력하고, 입력한 값들을 배열에 저장한다. 그 배열을 순열로써 저장 시킨다. 그렇게 되면 입력 1의 예시로 20 1 15 8 4 10의 값이 입력되면 값으로 저장이 된다. 이렇게 순열로 모든 경우의 수를 저장한다. 그 다음 순열마다 순열의 차이를 더해서 그 값이 기존의 최대값보다 크다면 최대값을 초기화한다. 모든 순열을 다 돌았다면 최종 최대값을 출력한다. 코드 from itertools import permutations import sys N = int(sys.stdin.readline()) per = permutations(list(m.. 2021. 8. 20.
반응형