https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXO72aaqPrcDFAXS SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com SSAFY 알고리즘 정기스터디 2번째, 알고리즘 리뷰 # 코드 def pel_check(n): n = str(n) middle_num = len(n)//2 # 중간 index if len(n)%2 == 1: # 홀수라면 n = n[0:middle_num] + n[middle_num+1:] # 중간제거 result = 0 # 펠림드롬 검사 if n[0:middle_num] == n[middle_num..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV189xUaI8UCFAZN SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com SSAFY 알고리즘 스터디 1번째, 알고리즘 리뷰 # 첫 번째 풀이, if문 T = int(input()) for test_case in range(1, T + 1): p, q, r, s, w = map(int, input().split()) result = [p*w, 0, 0] if w > r: # 요금이 임계값을 넘었다면 result[1] = q + s*(w-r) else: # 넘지 않았다면 r..
https://www.acmicpc.net/problem/10812 10812번: 바구니 순서 바꾸기도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2www.acmicpc.net 문제도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀 있다. 바구니는 일렬로 놓여 있고, 가장 왼쪽 바구니를 1번째 바구니, 그다음 바구니를 2번째 바구니,..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다.도현이는 앞으로 M번 바구니의 순서를 회전시키려고 만들려고 한다. 도현이는 바구니의 순서를 회전시킬 때, 순서를 회전시킬 범위를 정..
https://www.acmicpc.net/problem/24463 24463번: 미로첫 번째 줄에는 미로의 크기 $N, M$이 주어진다. $(3 \le N, M \le 2,001$, $N, M$은 홀수$)$ 두 번째 줄부터는 미로의 정보가 주어진다. 두 번째 줄부터 $N$줄에 거쳐 각 줄에는 길이가 $M$이고 .과 +만으로 이www.acmicpc.net입력첫 번째 줄에는 미로의 크기 N, M이 주어진다. (3≤N, M≤2,001, N, M은 홀수)두 번째 줄부터는 미로의 정보가 주어진다. 두 번째 줄부터 N줄에 거쳐 각 줄에는 길이가 M이고 .과 +만으로 이루어진 문자열이 주어진다.같은 지점으로 돌아오는 길이 존재하지 않고, 두 구멍 사이를 이동할 수 있는 미로만 주어진다.출력주어진 미로를 최단 거리로..
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.www.acmicpc.net문제지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다.체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색..
우선순위 큐 우선순위를 가진 항목들을 저장하는 큐 우리가 정한 우선순위대로 정해진 큐 원래라면 1차선 도로처럼 FIFO 순서대로 나아가는 것을 큐(Queue)다. 2차선처럼 우선순위가 높은 데이터가 먼저 나가는 것이 우선순위 큐다. 숫자의 크기를 가지고 일단 우선순위 큐를 만들어보자. 우선순위 큐(heap)은 2가지로 구분 최소 우선순위 큐 (min heap) 최대 우선순위 큐(max heap) 우선순위 큐 구현방법 3가지가 존재한다 1. 배열을 이용한 우선 순위 큐 정렬이 안된 배열 정렬이 된 배열 삽입 - O(1) 가장 뒤에 삽입 삭제 - O(n) 처음부터 끝까지 모든 요소를 check하여 삭제 삽입 - O(n) 모든 요소와 삽입할 요소의 우선순위를 비교하여 삽입위치 결정(이진탐색) 삭제 - O(1)..
배열 같은 자료형의 값 여러 개를 저장하는 연속된 공간 배열을 선언하는 4가지 방법 // 배열 선언 첫 번째 방법 String[] coffees = new String[4]; // 두 번째 방법 String coffees[] = new String[4]; // 세 번째 방법(선언과 동시에 초기화) String[] coffees = new String[] {"아메리카노", "카페모카", "라떼", "카푸치노"}; // 네 번째 방법 String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"}; 배열 순회 public static void main(String[] args) { // 배열의 순회 String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸..
https://www.acmicpc.net/problem/1749 1749번: 점수따먹기동주는 항상 혼자 노느라 심심하다. 하지만 혼자 놀기의 고수가 된 동주는 매일매일 게임을 개발하여 혼자놀기의 진수를 우리에게 보여준다. 어느 날 동주는 새로운 게임을 개발하였다. 바로 점www.acmicpc.net입력첫째 줄에 N (1 출력첫째 줄에 최대의 합을 출력하라.예제 입력13 52 3 -21 -22 -235 6 -22 -23 -25-22 -23 4 10 2예제 출력 116 코드from sys import stdin r_line = stdin.readline h, w = map(int, r_line().split())matrix = [[0] for _ in range(h)]for i in range(h): # ..
MST 중 prim알고리즘은 그리디알고리즘을 만족하는 몇 안 되는 알고리즘이다. 여기서 mst = minimum spaning tree로 최소신장트리이다. 신장트리 중 가중치의 총합이 가장 최소임을 의미한다. 특징으로는 1. 간선의 가중치의 합이 최소여야 한다. 2. n개의 정점을 가지는 그래프에 대해 반드시 (n-1) 개의 간선만을 사용해야 한다. 노드 1번에서 가질 수 있는 간선의 수 : 2(N-1) 노드 2번에서 가질 수 있는 간선의 수 : 2(N-2) 노드 3번에서 가질 수 있는 간선의 수 : 2(N-3) 이를 모두 더하면 2(N-1 + N-2 + N-3 + .... + N-N) 2*(N^2 - (N(N+1)/2)) E = N(N-1) 이다. 이때 prim알고리즘은 현재 보이는 것 중 가장 좋은 ..
https://www.acmicpc.net/problem/13703 13703번: 물벼룩의 생존확률수면에서 k 센티미터 아래에 있는 물벼룩은 1초마다 각각 1/2의 확률로 위 또는 아래로 1 센티미터 이동한다. 물벼룩은 수면에 닿자마자 기다리고 있던 물매암이들에 의해 먹혀 없어진다. 예를www.acmicpc.net문제수면에서 k 센티미터 아래에 있는 물벼룩은 1초마다 각각 1/2의 확률로 위 또는 아래로 1 센티미터 이동한다. 물벼룩은 수면에 닿자마자 기다리고 있던 물매암이들에 의해 먹혀 없어진다. 예를 들어, 수면아래 2 센티미터에 있던 물벼룩은 3초 동안 "위위위, 위위아래, 위아래위, ..., 아래아래아래"의 8가지 방법으로 움직일 수 있고, 이 방법들의 확률은 모두 1/8로 같다. 이 중..