알고리즘

https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   import java.util.*;class Solution { Queue bridge = new ArrayDeque(); int totalWeight = 0; int totalTime = 0; public int solution(int bridge_length, int weight, int[] truck_weights) { for (int truc..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 전체 코드는 맨 마지막에 두었다. 문제를 풀기 전에 조합으로 팀을 나누고, 각 팀의 점수를 구한 뒤, 두 팀의 점수의 차 중 최솟값을 저장하면 되겠다 싶었다. 근데 우선 조합 구현을 순열로... 하고 있었고, 또 나는 조합 구현을 백트래킹으로 했고, 매개변수로 총 점수 합을 가져가는 식으로 구현했는데 다 풀고 찾아보니 조합때는 팀 편성만 담당하고, 마지막에 다 편성이 되면 그때 점수를 구하는 형태로 구현을 해둬서 나도..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 class Solution { int length = 1000 * 50; boolean[] composites = new boolean[length + 1]; private void setPrimes() { composites[0] = composites[1] = true; for (int i = 2; i
https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 분할 정복은 한번 익혀두면 구조가 같아서 바로 익혀진다. 파이썬으로 풀었어서 이젠 자바로 풀어봤다. 메인 파트이다. 가로 길이를 입력받고, 2차원 배열에 값을 넣어준 뒤, 분할정복 함수를 실행 하고 출력해준다. 끝! 분할 정복 함수는 n행 m열 좌푯값과 정복할 영역의 한 변의 길이를 입력으로 받는다. 그 뒤에 첫 좌푯값을 check 라는 변수에 저장해두고, 영역을 이중포문으로 돌면서 ..
https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net BFS로 풀었다. 정답 비율 보고 겁먹었는데 생각보다 할만한 난이도. 원트클! 대강의 흐름을 이렇게 잡았다. 1. BFS로 물에 안 잡기는 영역을 세기 2. (비가 안 내릴 수 있으니) 0부터 물에 다 잡기는 최대 높이까지 +1씩 반복문으로 돌면서 최대 영역 개수 구하기 우선 String을 int 로 변환해주는 stoi 함수는 편의상 만들어 두고 쓰는 함수이다. 그리고 지역의 행, 열 길이인 N 지역의 ..
https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 동적 계획법, 그중에 상향식(Tabulation)으로 풀었다. 처음에는 백트래킹으로 풀어봤는데 시간초과가 났다. 메모리가 4MB 밖에 안 되어서 dp는 아니겠다 싶었는데 dp로 푸는 거였다. 풀이에 사용하는 변수들과 입력이다. N, K는 각각 동전 개수와 만들어야 하는 금액이며, 동전을 받기 위해 리스트를 만들어 입력해주었고, 동적 계획법으로 푸므로 dp를 0부터 K를 범위로 하는 정수 배열로 선언..
https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net """ 빙산 (Gold 4) https://www.acmicpc.net/problem/2573 """ from collections import deque N, M = map(int, input().split()) # N * M 배열 board = [list(map(int, input().split())) for _ in range(N)] dd = [(-1, 0), (1, 0), (0, -1..
https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net """ 적록색약 (Gold 5) https://www.acmicpc.net/problem/10026 """ from collections import deque N = int(input()) # N 입력받음. ( N * N ) board = [input() for _ in range(N)] # 적록색약 아닌 사람의 그래프 board_blind = [row.replace("R", "G") f..
https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net """ 텀 프로젝트 (Gold 3) https://www.acmicpc.net/problem/9466 """ import sys sys.setrecursionlimit(10 ** 7) # 파이썬의 최대 재귀 실행 횟수는 정해져 있으므로 해금해줘야함 def dfs(x): global cycle_count visited[x] = True # 현재 학생(노드) 방문 체크 (테스트 케이스 동안 유지되는 변수)..