always_here

지식을 공유하고 함께 성장하는 엔지니어 as_always 입니다

AS_ALWAYS
728x90

알고리즘 9

구름톤 챌린지 Day13, Day15[탐색과 DP]

[문제 13] n, K = map(int, input().split()) graph = [] for i in range(n): graph.append(list(map(int, input().split()))) moves = [[1, 0], [-1, 0], [0, 1], [0, -1]] result = 0 def dfs(x, y): stack = [[x,y]] cnt = 0 M = graph[x][y] while stack: x, y = stack.pop() if graph[x][y] != M: continue graph[x][y] = 0 cnt += 1 for dx, dy in moves: nx, ny = x + dx, y + dy if 0 이렇게하면 몇개 케이스에서 에러가 나오는데, 1조각당 포만감이 ..

알고리즘 2023.09.10

구름톤 챌린지 Day 11 - Day 12[탐색과 DP]

[문제 11] N = int(input()) A, B = map(int, input().split()) dp = [9999999 for _ in range(N + 1)] dp[0] = 0 for i in range(N + 1): if i - A >= 0: dp[i] = min(dp[i], dp[i-A] + 1) if i - B >= 0: dp[i] = min(dp[i], dp[i-B] + 1) if dp[-1] == 9999999: print(-1) else: print(dp[-1]) 동적프로그래밍 문제는 제대로 풀어본 적이 없어서 이 문제 또한 매우 간단해보이지만 어렵게 느껴졌다. 먼저 dp 배열은 통증 수치가 i 일 때, 통증 수치를 0으로 만들기 위해 필요한 아이템의 최소 개수라 설정한다. < dp..

알고리즘 2023.09.08

구름톤 챌린지 Day09 - Day10 [완전탐색]

[ 문제 9 ] N, K = map(int, input().split()) matrix = [] for i in range(N): matrix.append(list(input().split())) result = [[0] * N for i in range(N)] dx = [0, -1, 1, 0, 0] dy = [0, 0, 0, 1, -1] for k in range(K): xx, yy = map(int, input().split()) xx -= 1 yy -= 1 for i in range(5): if 0 10 % 10 = 0 우측 끝에 도달하여 왼쪽 끝으로 돌아간 경우 -> -1 % 10 = 0 왼쪽 끝이 -1인 경우에 10으로 나눈 나머지는 9가 나온다 오른쪽 끝으로 간 경우 -> (x + dx[0])..

알고리즘 2023.09.04

구름톤 챌린지 Day06 - Day08 [완전탐색]

[ 문제 6 ] from itertools import combinations N = int(input()) S = input() P = set() blank = [i for i in range(1, N)] com = list(combinations(blank, 2)) for f, s in com: P.update([S[:f], S[f:s], S[s:]]) p = list(P) p.sort() result = 0 for f, s in com: tmp = 0 tmp += p.index(S[:f]) + 1 tmp += p.index(S[f:s]) + 1 tmp += p.index(S[s:]) + 1 result = max(result, tmp) print(result) 물론, 이중 for문을 사용해서 부분 ..

알고리즘 2023.08.31

구름톤 챌린지 Day01 - Day05 [구현]

[ 문제 1 ] W, R = map(int, input().split()) RM = int(W * (1 + R / 30)) print(RM) 소수점 이하의 값을 버릴 때는 int()를 사용하면 편리하다. [ 문제 2 ] N = int(input()) T, M = map(int, input().split()) total_min = (T * 60) + M for i in range(N): total_min += int(input()) H = (total_min // 60) % 24 M = total_min % 60 print(H, M) 위 문제와 같이 단위가 다른 ex) 시, 분 문제는 먼저 단위를 통일한 후에 계산하고 마지막에 문제에서 제시한 조건으로 단위를 나눠서 출력하는 것이 편한 것 같다. 문제에서 ..

알고리즘 2023.08.30

[프로그래머스] 소수찾기 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조합 (combination) 순서를 고려하지 않기 때문에 [A, B, C]의 리스트에서 2개의 원소를 골라 나열하면 [(A, B), (A, C), (B, C)] 가 나오게 된다. 조합은 (A, B)와 (B, A)는 같은 것으로 취급한다. from itertools import combinations arr = ['A', 'B', 'C'] result = combinations(arr, 2) pr..

알고리즘 2022.07.24

[프로그래머스] 프린터 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 배열의 첫 숫자가 해당 배열의 최댓값이 될 때까지 숫자들을 빼서 뒤로 옮겨준다. ### 생각하지 못한 부분! 배열의 가장 큰 수가 맨 앞으로 오면 끝이라고 생각하고 문제 풀이를 진행해서 계속 실패했다. 전체 배열이 모두 내림차순으로 정렬될 때까지 진행해야한다! 1. 배열의 값들과 인덱스를 저장할 배열을 만들어준다. 2. 현 위치 값이 뒷 배열들의 최댓값보다 작다면 빼서 맨 뒤로 옮겨준다. +..

알고리즘 2022.07.20

[프로그래머스] 짝지어 제거하기 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 모두 제거 완료 기존 아이디어. While True 반복문 속에서 현 위치의 문자와 다음에 이어서 오는 문자가 같다면 pop()을 두번 진행한다. -> 시간 초과 오류가 계속 발생 해당 문자열 길이만큼만 for문을 돌면서 stack에 문자를 하나씩 추가한다. stack에 마지막에 들어간 문자와 stack에 추가할 문자가 같..

알고리즘 2022.07.20

[프로그래머스] 신고 결과 받기 (Python)

https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr id_list = ["muzi", "frodo", "apeach", "neo"] report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"] k = 2 report = list(set(report)) 으로 report 중복 제거 n_dic (신고 당한 횟수 저장) 딕셔너리 dic ..

알고리즘 2022.07.04
728x90