목록알고리즘 (270)
쌓고 쌓다
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://softeer.ai/practice/7727 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 풀이 방법친구들의 현재 위치에서 우선 수확을 한다. 친구들 목록을 순회하면서각 친구들을 방문한다. 방문한 친구가 모든 이동을 소진할때까지 4가지 방향으로 이동한다.이때 이동시 방문한 위치에서 열매를 수확한다. (수확시 해당 좌표의 값은 0으로 변환)모든 이동을 소진했다면 다음 친구를 이동시킨다.위의 과정을 반복한다. DFS 문제이다. 전체 코드import java.io.*;import java.util.*;public class Main { static class Pos { int y; int x; public Pos(int y, in..
https://www.acmicpc.net/source/78693009 풀이 방법BFS를 이용한다.노드 방문시X노드부터 방문 노드까지의 거리가 담긴 dis에 담긴 거리가 K와 동일하다면 답에 추가한다. 전체 코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] inputs = (reader.readLine()).split(" "); ..
https://www.acmicpc.net/source/78677494풀이 방법[i][j] 위치에서 벽을 부순 상태인지 아닌지를 구분할 수 있게 3차원 배열을 이용해 푼다.[i][j][0] 이라면 i,j 위치에 있을때 이전까지 벽을 한번도 부수지 않은 상태이고[i][j][1] 이라면 i,j 위치에 있을때 이전에 벽을 부순 이력이 있는 상태이다. [i][j][0]에서 다음 좌표에 벽을 만났다면 이 벽을 부술 수 있는 상태이다.[i][j][1]이라면 다음 좌표에 벽이 있다면 이전에 벽을 부순 상태이기 때문이 벽을 부술 수 없다. 위의 3차원 배열을 이용해 BFS를 이용해 푼다. 전체 코드import java.io.*;import java.util.*;public class Main { stati..
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 { ..