알고리즘/Python

알고리즘/Python

[python] 프로그래머스 - 행렬 테두리 회전하기

출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/77485# 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 오랜만에 돌아온 프로그래머스! 사실 요즘 코딩 테스트를 쳐보려고 마구자비로 자소서를 넣고 후기들을 비공개 포스트로 올리고 있는데 모 회사의 코딩테스트 문제에 비슷한 문제가 출제되어서 풀어보았다. 굉장히 쉬워보이는데 실수할 여지가 많다......... 프로그래머스도 다 풀어봐야겠다.......... 더보기..

알고리즘/Python

[python] 백준 1932 - 정수 삼각형

출처 : 백준, https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 이거 푸니까 보람차다. 프로그래머스에 동일한 문제가 있다. 더보기 2023.04.15 업데이트 풀이 def solution(triangle): # 7 # 3 8 # 8 1 0 # 2 7 4 4 # 4 5 2 6 5 # 점화식은 triangle[i][j] = triangle[i][j] + max(triangle[i-1][j-1], triangle[i-1][j]) answer = 0 floor = len(triangle) for i in range(1, f..

알고리즘/Python

[python] 백준 1874 - 스택 수열

출처 : 백준, https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 이거 진짜 문제 설명이 이상하다. 나도 잘하는건 아니지만 그래도.......... 정답 비율이 낮은 이유가 어려워서가 아니라 문제를 이해 못해서일 확률이 높다. 1부터 n까지 수를 스택에 차례대로 넣었다 빼면서 입력으로 들어온 순열와 같은 순서를 만들 수 있는가? 단, 스택에서 꺼낸 수는 다시 넣을 ..

알고리즘/Python

[python] 백준 13305 - 주유소

출처 : 백준, https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 더보기 첫 번째 풀이 : 58점 n = int(input()) diss = list(map(int, input().split())) prices = list(map(int, input().split())) prev_price = 99999 answer = 0 for index in range(n-1): if prev_price > prices[index]: prev_..

알고리즘/Python

[python] 백준 1057 - 토너먼트

출처 : 백준, https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 더보기 풀이 if __name__ == '__main__': num, A, B = map(int, input().split()) count = 0 while True: if A == B: break if A > 1: A = A//2 if A % 2 == 0 else (A//2) + 1 if B > 1: B = B//2 if B % 2 == 0 else (B//2) + 1 count += ..

알고리즘/Python

[python] 백준 2529 - 부등호

출처 : 백준, https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 더보기 풀이 def drawLine(ineq_arr, target_arr): n = len(ineq_arr) if ineq_arr[n-1] == '>': target_arr[n] = 'B' else: target_arr[n] = 'R' prev = '' for i in range(n): if prev != ineq_arr[i]: if ineq_arr[i] == '

알고리즘/Python

[python] 백준 1072 - 게임

출처 : 백준, https://www.acmicpc.net/problem/1072 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 더보기 첫 번째 풀이 : 실패 import math if __name__ == '__main__': X, Y = map(int, input().split()) a = math.ceil(X**2/(99*X-100*Y)) if 99*X-100*Y > 0 else -1 print(a) 공식을 계산할 때, 전과 후의 차가 0.01 이상이 되는 게임 횟수로 설정을 했는데, 생각해보니..

알고리즘/Python

[python] 백준 2193 - 이친수

출처 : 백준, https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 더보기 풀이 if __name__ == '__main__': n = int(input()) dp = [0] * (n + 1) dp[1] = 1 for i in range(2, n+1): dp[i] = dp[i-2] + dp[i-1] print(dp[n]) 해보니까 되더라... 시간 복잡도 - 다른 사람의 풀이를 보면서 알게 된 점 - 고찰 -

알고리즘/Python

[python] 백준 1149 - RGB거리

출처 : 백준, https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 내가 푼 게 아니다..... 더보기 풀이 if __name__ == '__main__': n = int(input()) arr = [] for _ in range(n): arr.append(list(map(int, input().split()))) pre_index = arr[0].index(max(arr[0])) for i in range(1, n): ind..

알고리즘/Python

[python] 백준 24460 - 특별상이라도 받고 싶어

출처 : 백준, https://www.acmicpc.net/problem/24460 24460번: 특별상이라도 받고 싶어 첫 번째 줄에는 정수 $N$이 주어진다. (단, $N = 2^m$, $0 \le m \le 10$, $m$은 정수) 두 번째 줄부터 $N$개 줄의 $i$번째 줄에는 $i$번째 줄에 있는 의자에 적힌 추첨번호가 주어진다. 각 줄에는 $N$개의 추첨 www.acmicpc.net 룸메의 코골이를 피해 자취방으로 도피....... 덕분에 1일 1커밋 끊김.........다시 시작해야지 어휴 더보기 풀이 def Recursive(arr, start, end): start_x, start_y = start end_x, end_y = end if end_x - start_x == 1: return..

알고리즘/Python

[python] 백준 15657 - N과 M (8)

출처 : 백준, https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 더보기 풀이 stack = [] def DFS(start, num_list, N, M): if len(stack) == M: for num in stack: print(num_list[num], end=' ') print() return for index in range(start, N): stack.append(index) DFS(index, num_list, N, M)..

알고리즘/Python

[python] 백준 15656 - N과 M (7)

출처 : 백준, https://www.acmicpc.net/problem/15656 15656번: N과 M (7) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 더보기 풀이 stack = [] def DFS(num_list, N, M): if len(stack) == M: for num in stack: print(num_list[num], end=' ') print() return for index in range(N): stack.append(index) DFS(num_list, N, M) stack.pop() if __nam..

제주도랏맨
'알고리즘/Python' 카테고리의 글 목록 (7 Page)