목록2024/07 (14)
Lewis's Tech Keep
링크https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명일단 이중 반복문으로 마구마구 했을 때 방법은 알았지만, 효율적으로 하는 방법이 아예 생각나지 않았다.그래서 괜찮은 풀이들을 찾게 보게 되었고 좋은 힌트들을 발견하였다.https://mag1c.tistory.com/295, https://yejin72.tistory.com/109두 링크의 풀이가 나에겐 제일 와닿았다. 각 weight를 가벼운 순 - 무거운 순으로 정렬한다.시소는 2, 3,..
링크https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명BFS 나 DFS를 통해 backtracking 처럼 더해질 수 있는 경우의 수를 계산한다.최대 숫자가 1,000,000 이기 때문에 그 이상은 체크하지 않는다. 각 BFS 단계마다 n만큼 더하거나, 2배를 곱해주거나, 3배를 곱해주면서현재의 경우의 수가 y와 같아지는 지 찾는다.찾았다면 현재 단계의 숫자를 반환한다. 풀이더보기import java.util.*;class Solution { ..
링크https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명1. 이중 반복문으로 체크하는 숫자 중에 제일 먼저 만나는 수를 저장했지만 시간초과로 실패 2. 1은 이중 반복문이기 때문에 O(n^2) 이지만 스택에 index 를 저장하는 형식으로 O(n)으로 풀도록 변경함 가장 stack의 최상위에 올라와 있는 숫자와 가장 최근의 숫자 보다 큰 숫자가 나온다면,해당 숫자보다 작은 숫자들에 큰 숫자를 모두 적용한다. Ex. ) [9, 5, 4, 3, 2,..
링크https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명무인도의 각 칸 마다 먹을 수 있는 foodCnt가 있다. 약간 유형은 석유 시추 문제와 비슷하게 각 칸 마다 BFS를 통해 갇혀진 칸 안에서 합계를 구하고,이미 지나간 칸은 지나갔다고 마크해서 효율성을 최대화한다. 각 칸의 합계가 다 나왔다면 돌아가서 우선 순위 큐에 오름차순으로 Integer를 넣어주면 된다. 풀이더보기import java.util.*;class Solution { ..
링크https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명아래 그림은 프로그래머스 예제에서 가져왔다.문제에서는 각 예약은 퇴실 후 청소 시간이 10분이 있다.그렇다면 한 Room 예약은 14:10 ~ 19:20 이라도 실제로 사용 가능한 시간은 19:30 부터 인 것이다. 각 Room 예약을 List에 저장하고 PriorityQueue에도 시작시간 기준으로 정렬해서 넣도록 먼저 추가했다.List는 시작 시간 기준으로 정렬된 Room 예약에 겹치는..
링크https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명미로에서 레버를 통과한 후 결과지점을 찾는 문제이다.BFS를 2번 하였다.1번 BFS : 시작점에서 레버까지 도달하는 거리 찾기2번 BFS : 레버부터 도착점까지 도달하는 거리 찾기 각 BFS에서 찾지 못하는 경우 -1 을 반환 (목표지점까지 찾기가 막혔다는 뜻)찾은 경우 각 단계에서 찾은 최소 거리를 각각 다해서 반환한다. 풀이더보기import java.util.*;class Soluti..
링크https://school.programmers.co.kr/learn/courses/30/lessons/160585# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명알고리즘 체크보다는 엣지 케이스들을 다 체크 해주는 게 중요했다.이길 수 없는 경우들을 잘 골라내서 return 해준다.더보기// 진행 가능 : 0가 1개 더 많거나 O와 X개수가 같다. (이것이 아닌 경우)/ oCount와 xCount가 2개 이상 차이 나면 안된다.// X 개수가 더 많을 수 없다.// 한쪽이 완료됐는데 다른쪽 완료도 있으면 안됨// O 완료가 1개인데 O와 X의 개수가..
링크https://school.programmers.co.kr/learn/courses/30/lessons/169198 설명입사각 반사각이 같다면 어떤 벽을 기준으로 대칭했을 때 직선이 되는 성질이 있다.아래 그림 문제는 당구 벽이기 때문에 각 벽은 4개가 존재한다.4개의 대칭을 한 예를 들어서 해본다면 위와 같은 형태와 비슷하게 만들어 질 것이다. 한 눈에 본다면 이런 느낌 하지만 예외 경우가 있는데 원 쿠션이 가기도 전에 만나버리는 경우다.이런 경우만 제외하고 각 벽을 기준으로 대칭한 후에 직선 거리를 구하면 된다. 직선 거리 구하기 (x1, y1) (x2, y2)일 때직선 거리^2 = (x2-x1)^2 + (y2-y1)^2 풀이더보기class Solution { public int[] sol..