목록알고리즘/프로그래머스 (185)
쌓고 쌓다
https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 방법연속된 자연수들의 합으로 총합을 찾는 문제이다.연속된 자연수이므로 시작 자연수를 나타내는 Left와 끝 자연수를 나타내는 Right 자연수를 선언한다. Left와 Right 까지의 합을 찾는 목표 값과 비교하며 늘렸다 줄였다하며 찾아간다. Left부터 Right까지의 합이 목표값보다 작다면 Right를 늘려주고Left부터 Right까지의 합이 목표값보다 크다면 Left를 줄여주며연속된 자연수들의 합으로 목표값을 만들 수 있는 가짓수를 ..
https://school.programmers.co.kr/learn/courses/30/lessons/12951# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 풀이문자열을 돌며 다음 조건문을 만들어 체크한다. "대문자인 경우"1. 대문자가 그대로 오는 경우 - 앞 문자가 공백이거나 문자열의 시작 위치인 인덱스 0이라면.2. 소문자로 변환해야하는 경우 - 앞 문자가 공백이 아닌경우 "소문자인데 대문자로 변환해야하는 경우"1. 소문자인데 문자열 시작 위치 인덱스 0 이거나 앞에 공백인 경우 "그 외 문자 그대로 출력" 테스트 케이스 8번이 틀리는 경우 다음 경우를 생각해보자.공백의 문자가 연속으로 ..
https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법우선 경기 결과로 확실하게 순위를 알 수 있는 경우는 다음과 같다. 사람이 N명일때나를 이긴 사람들 수와 나에게 진 사람들의 수가 N-1일때, 나의 순위는 (나를 이긴 사람들 수 + 1)위 이다. 그런데 여기서 더 생각해볼 수 있는 부분은 다음과 같다.나를 이긴 사람들 (간접적으로 이긴 사람들이다.)내가 진 사람들을 이긴 사람들 또한 나를 이긴 사람들이다.내가 진 사람을 이겼다는것은 나를 이..
https://school.programmers.co.kr/learn/courses/30/lessons/132266#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법최단 거리를 구하는 BFS 문제이다.부대에서 BFS 탐색을 시작하면 된다. 전체 코드import java.util.*;class Solution { class Node { int num; Node(int num) { this.num = num; } } public int[] solu..
https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법버스가 도착할때 탑승 가능인원만큼 버스에 탑승한다.사람들을 탑승 시키는 방법은timetable을 오름차순으로 정렬하고탑승 가능한 시각이라면 ( 버스 도착 시각보다 일찍 도착한 사람) 탑승 시킨다. 내가 가장 늦게 버스를 타는 방법은막차 버스에 마지막 여석에 내가 타면 된다. 막차 버스에 대기중인 사람이 없다면막차 버스 도착 시각에 탄다. 막차 버스에 대기중인 사람이 있다면마지막 탑승 사람보다..
https://school.programmers.co.kr/learn/courses/30/lessons/12904#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법팰린드롬의 길이를 "1 ~ s의 길이"로 설정해 놓고 반복문을 통해시작 위치부터 종료 위치까지 팰린드롬인지 확인하면 된다. 전체 코드import java.util.*;class Solution{ public int solution(String s) { int answer = 0; for(int i=s.length(); i>=1; i--)..
https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법[i][j] 위치 방문할때 현재 [i][j] 위치에 도착하는데 드는 비용보다 크더라도방향이 운 좋게 맞아 떨어져서 추후에 경주로 끝에 도달하는데 더 작은 비용이 될 수 있다.그래서 3차원 배열 [i][j][방향]으로 [i][j] 위치에 어떤 방향으로 방문을 했으며 드는 최소 비용을 기록하면서 방문해야한다. 전체 코드import java.util.*;class Solution { ..
https://school.programmers.co.kr/learn/courses/30/lessons/43238#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법우선순위 큐 방식을 생각했지만 O(N)으로 시간초과가 난다. 더 빠른 방법이 있을까... 이걸 어떻게 이진탐색으로 푼다는건지 신기하다.. 이진 탐색 풀이 방법은 다음과 같다.left : 모든 사람들을 심사하는게 걸리는 최소 시간right : 모든 사람들을 심사하는게 걸리는 최대 시간mid : 심사하는데 걸리는 총 시간cnt : mid 시간동안 심사 받을 수 있는 최대 사람 수 mid ..