Algorithm/programmers 39

[2022 카카오 블라인드]파괴되지 않은 건물★

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 풀면서 느꼈지만 당연하게 효율성에서 걸렸던 문제다. O(N*M)을 O(1)로 바꾸기 위해서 누적합 개념을 이용해야 했는데 2차원 배열로 확장된 케이스라 어느정도 고려할 부분이 있었지만 1차원 배열에서의 누적합 개념을 제대로 이해하고 있었으면 풀 수 있을 문제였을 것 같다. 누적합 유형도 간혹가다가 출제되는 것 같으니 어느정도 익혀놓는 것이 좋을 것 같다. 👩‍💻 코드 imp..

[2019 카카오 인턴십]징검다리 건너기

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 전형적인 이분 탐색 문제였다. 1. 건널 수 있는 경우에는 건널 수 있는 인원 수 누적해가면서 인원 수를 높여본다. 2. 건널 수 없는 경우에는 인원 수를 낮춰본다. 건널 수 있는지의 여부는 연속된 디딤돌이 k개가 되지 않을 때이다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.i..

[2019 카카오 블라인드]매칭 점수

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 문자열 파싱을 알맞게 잘 할 수 있는지 물어볼 수 있는 문제였다. indexOf를 이용해서 각 태그들에 대해서 필요한 문자열을 추출한다. 1. 태그 안에 있는 웹페이지 URL -> 태그는 여러개일 수 있다. 2. 태그 안에 있는 검색어 3. 태그 안에 있는 태그 URL 링크점수는 기본점수 / 외부링크 수 이므로 계산이 가능하고 매칭 점수에 더해지므로 따로 관리 안해도 된다...

[2021 카카오 블라인드]광고 삽입

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/72414 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 시청자가 듣는 시간에 광고를 삽입해서 새로운 시청자가 등장하는 경우, 시청자가 시청을 끝낸 경우, 광고 시간이 끝나는 경우 3가지로 나누어서 생각해보려 했다. 시청자의 시청 시작 시간이 35:50-46:30, 43:50-55:11, 49:55-59:15,이고 광고 시간이 10:00 이라면 45:50, 53:50, 59:55이런식으로.. 1.35분 50초에 광고 삽입했을 때 ..

[2020 카카오 인턴십]경주로 건설

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 마지막 테스트케이스가 꽤나 골치 아팠던 문제였다. 24번까지는 따로 방문 처리를 하지 않더라도 금액에 따라 방문 여부가 결정되니 있던 없던 차이가 별로 없었다. 25번 케이스는 오는 방향에 따른 최소 비용을 구할 수 있는 지를 판별하는 케이스였다. ex) 3x3의 크기의 배열 (2,3, 동쪽)의 400원 (2, 3, 북쪽) 500원이라고 했을 때 400원이 선택 된다. (2..

[2019 카카오 인턴십]불량 사용자★

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 범위가 좁다보니까 모든 user_id를 banned_id 만큼 생성해서 맞는지 확인하려고 했었는데, 순열로 풀자니 중복 문제가 조합으로 풀자니 banned_id에서 매칭되는 순서 문제가 발생했다. 그래서 타 블로그를 참고 했다. 먼저 banned_id를 기준을 넣을 수 있는 user_id를 보관해두는 list를 만들었다. (정규표현식을 이용했고 '.'라는 문자는 임의의 한 ..

[2020 카카오 인턴십]보석 쇼핑

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 투 포인터를 이용하여 풀 수 있는 문제 보석을 살 수 있는 구간일 때 범위를 계속 줄여가며 누적해야 한다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public int..

[2021 카카오 인턴십]표 편집

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/81303 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 기존의 행번호를 기억해야된다는 생각에 List랑 Map, Stack을 사용해서 풀려고 했다. 복원하는 과정에서 서로의 연결지점을 변경하는 부분이 문제가 있었다. 잘 안풀려서 타 블로그를 참고를 했다. 리스트 자체를 조작하지 않고 사용여부로 판단한다면 서로 연결된 노드만 신경써주면 된다! 👩‍💻 코드 import java.io.BufferedReader; import java..

[2018 카카오 블라인드 1차]셔틀버스

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 일단 탈 수 있는 사람들 태우고 콘이 탈 수 있는 시간을 끝까지 갱신해주면 된다. 제일 늦게 도착할 수 있는 시간을 자리 있을 경우/없을 경우로 나누었다. 1.자리가 있으면 셔틀 출발 시간에 딱 맞춰가서 탄다. 2.자리가 없으면 마지막 사람 1분 전에 가서 탄다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOExcepti..

[2018 카카오 블라인드 1차]추석트래픽

📍 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/17676 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 1. 문자열들 파싱해서 시작 시간, 처리 시간을 구한 뒤 리스트에 넣었다. 2. 각 구간의 처리량을 구하는 부분에서 시간을 좀 오래 잡아먹었다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; p..