https://school.programmers.co.kr/learn/courses/30/lessons/60058?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이방법 문제를 이해해보려고 했다가 망했던문ㅈ ㅔ... 진짜 문제에서 하란대로 해야지 풀린다 1. 문자열을 두개로 나눈다. -> 나누는 기준 : '(' 이면 -1, ')' 이면 +1을 해주고 0이 되는 지점을 기준으로 앞 문자열을 u, 뒷 문자열을 v 2. u문자열의 맨 앞문자가 '(' 이면 올바른 괄호 문자열이다. 3. 올바른 괄호 문자열인 경우 u를 answer에 추가..
https://www.acmicpc.net/problem/14722 14722번: 우유 도시 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후 www.acmicpc.net 풀이방법 bfs로 풀었다가.. 메모리초과 빔 맞음.. 그래서 생각한 dp풀이 dp[i][j][k] -> i,j 위치에 있는 k 우유를 마셨을 때 우유의 최대 개수 1. 내 기준으로 동쪽, 남쪽을 본다. 2. 현재 위치의 색이 0 이면(딸기우유) 1과 현재 값 중 큰 값을 넣어준다. => 딸기우유가 처음이 아닐 경우를 고려 3. 현재 위치를 기준으로 동쪽우유를 본다 => 현재 위치값과 동쪽값 중 큰 값..
https://www.acmicpc.net/problem/21943 21943번: 연산 최대로 $N$개의 양의 정수 $X_{i}$와 곱하기 연산자, 더하기 연산자가 총 $N - 1$개가 존재하고 괄호는 무수히 많이 사용해도 된다. 이 연산에는 곱하기 연산자와 더하기 연산자의 우선순위가 동일하다. www.acmicpc.net 풀이방법 1. 숫자의 배치를 결정한다. (perm 사용) 2. 더하기의 배치를 결정한다. (combi 사용) 3. 계산한다. (더하기 먼저 다 계산 후, 곱하기 계산) 계산 방식(좀 복잡.. 이렇게 안하는 방법이 분명 있을 것이다..) 더보기 0. 초기상태 숫자배열, 더하기배열, 곱할목록 리스트 1. 더하기인 경우 : 더한값을 각각의 배열 위치에 저장한다. 2. 더하기인데 다음연산이 ..
https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 풀이방법 중량 제한인 C 의 범위가 커서 (1
https://www.acmicpc.net/problem/1949 1949번: 우수 마을 N개의 마을로 이루어진 나라가 있다. 편의상 마을에는 1부터 N까지 번호가 붙어 있다고 하자. 이 나라는 트리(Tree) 구조로 이루어져 있다. 즉 마을과 마을 사이를 직접 잇는 N-1개의 길이 있으며, www.acmicpc.net 풀이방법 1. 리스트를 생성해 연결 정보를 담는다. 2. dp[N+1][2] 배열을 생성한다. => dp[N][0] : N번째 마을이 우수마을이 아닌 경우, dp[N][1] : N번째 마을이 우수마을인 경우 3. dfs를 진행한다. => dp[N][0] : 이전마을 포함된경우 , 안된경우 중 큰 값 => dp[N][1] : 이전마을 포함 안된 경우 dfs 진행 경로 (문제에 있는 테스트케..
https://www.acmicpc.net/problem/16724 16724번: 피리 부는 사나이 첫 번째 줄에 지도의 행의 수를 나타내는 N(1 ≤ N ≤ 1,000)과 지도의 열의 수를 나타내는 M(1 ≤ M ≤ 1,000)이 주어진다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열이 주 www.acmicpc.net 풀이방법 1. visited[][] == 0 이라면 index를 가지고 탐색 진행 2. index 를 이용해서 사이클을 체크한다. (탐색 중 같은 인덱스를 가지고 있다면 count++) 3. 다른 index를 만난다면, 다른 사이클에 합류 되는 것 //example 3 4 DLLL DRUU RRRU 소스코드 import java.io.BufferedReader;..
https://www.acmicpc.net/problem/24337 24337번: 가희와 탑 일직선으로 다양한 높이의 건물들이 N개 존재합니다. 가희는 건물들의 왼쪽에, 단비는 건물들의 오른쪽에 있습니다. 일직선 상에 가희와 단비, 건물들은 아래와 같은 순서로 배치되어 있습니다. www.acmicpc.net 풀이방법 예시(N : 9, A : 4, B : 3) 1. A의 값을 먼저 채워준다. (N-B 부터 차례로) 2. B의 값을 채워준다.(A값이 차있을 시, 비교 해서 더 큰 값으로 둔다) 3. A,B 가 1인 경우 예외가 있기 때문에 처리 해 줘야한다. A가 1인 경우 -> N-B 칸(제일 큰 값이 들어있는 칸)을 제거 한 후, 제일 앞 (building[0]) 에 MAX값을 넣는다. ex) N : 9..