목록알고리즘 (272)
쌓고 쌓다
https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법start와 end 두개의 위치를 이용해 푼다. start는 다음과 같은 상황일때 갱신된다.start ~ end에 start 위치의 보석이 2개이상일 경우 ( 모든 종류의 보석을 start ~ end 에 포함하고 있을 때 )start의 위치를 +1하면 모든 종류의 보석을 포함하며 최소 길이가 될 수 있다.end는 반복문을 돌며 0부터 끝까지 돌아주면된다.이때 start를 갱신할 수 있다면 갱신..
https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법banned_id를 반복문으로 돌며일치하는 user_id를 하나씩 밴한다. 그리고 유저들의 인덱스를 가지고밴을 당했다면 1 안당했다면 0으로 String을 만들어 중복된 밴 목록인지 체크하면된다. 전체 코드import java.util.*;class Solution { public void dfs(int idx, String[] user_id, String[] banned_id, ..
https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법DP를 사용해서 푼다.첫번째 스티커를 뗀 경우와 안 뗀 경우의 배열을 나눠서 푼다. dp[i] : i번째 까지의 최댓값 첫번째 스티커를 뗀 배열 dp라면dp[0]의 값은 첫번째 스티커를 뗀 값이므로 sticker[0]dp[1]의 값은 첫번째 스티커를 뗀 경우 index 1의 위치에서는 스티커를 뗄 수 없으므로 1의 앞 index인 0의 값이 최대가 된다. 첫번째 스티커를 떼지 않은 배열 dp..
https://school.programmers.co.kr/learn/courses/30/lessons/12979#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법비전파 길이가 N일때이 비전파 길이를 최소한 기지국으로 전파를 하는 기지국의 개수는비전파 길이를 기지국 하나가 전파 가능한 길이로 나누면 된다. 위의 수학적 방법을 통해 반복문으로첫번째 기지국의 왼쪽 비전파 길이를 채우고두번째 이상 기지국 i는 i-1번째 기지국의 오른쪽 전파 끝 위치를 계산해서i 기지국의 왼쪽 전파 끝과 i-1번째 기지국의 오른쪽 전파 끝 위치 사이의 길이를 계산해서사..
https://school.programmers.co.kr/learn/courses/30/lessons/42884# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법진출 지점을 기준 오름차순 정렬한다.다음 차량의 진출 시점은 현재 차량의 진출 시점보다 같거나 크다가 보장된다.그럼 다음 차량의 진입 시점을 가지고 현재 카메라로 찍을 수 있는지 없는지 판별할 수 있다.첫 카메라는 첫 차량의 진출 지점에 설치한다.다음 카메라의 설치 필요는 현재 카메라로 다음 차량의 진입을 찍을 수 없을때 설치한다. 전체 코드import java.util.*;class Sol..
https://school.programmers.co.kr/learn/courses/30/lessons/12987#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법최대 점수를 얻기 위해서상대가 내는 숫자 카드이상이면서 최대한 가까운 숫자 카드를 내야한다.그래야지 내가 가진 큰 숫자의 카드는 또 다른 상대의 큰 숫자 카드를 이기는데 사용할 수 있기 때문이다. A와 B의 숫자 카드를 오름차순으로 정렬한다.A의 숫자 카드를 반복문으로 끝에서부터 돈다.그럼 A가 가진 가장 큰 숫자 카드순으로 반복문을 돌텐데이때 B가 가진 가장 큰 숫자의 카드와 비교하..
https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법이동은 오른쪽 또는 아래로만 이동이 가능하다.그러면 way[i][j] 위치로 이동하는 최단 경로는 way[i-1][j] 와 way[i][j-1] 위치에서 오는 방법뿐이다.즉 way[i][j]에 도착하는 최단 경로의 개수는 way[i-1][j] + way[i][j-1]이다. 반복문을 통해 x 방향으로 채우고 y 방향으로 채우며[i][j] 위치의 값을 [i-1][j]와 [i][j-1]의 값 합으..
https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법각 원소의 곱이 최대가 되게 하려면각 원소들의 크기가 균등하게 일정하게 분포되어있으면 모든 원소의 곱이 최대가 된다. 원소의 합 S가 주어졌을때 N개로 나눠 분배할때 균등하게 분포를 해주면 된다.나눠야할 원소의 합 S가 있을때 N으로 나눈다면 균등하게 분포할 수 있는 값이 된다. 위의 개념을 활용해서현재 idx 위치의 집합 원소를 배정할때현재 배분해야할 원소의 총 합을 남은 원소 자리의 개수..