본문 바로가기

알고리즘8

[프로그래머스/1829] 카카오프렌즈 컬러링북 https://school.programmers.co.kr/learn/courses/30/lessons/1829 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제는 이전에 풀었던 문제와 유사하다(https://lets-do-the-odessey.tistory.com/57) 이러한 문제의 경우 외워뒀던 bfs를 기계적으로 입력한 뒤 문제에 맞춰 코드를 수정하면 된다 토대가 되는 BFS 코드 기본적인 로직에 대해 설명하자면 LinkedList를 사용해 내가 방문할 노드를 큐에 등록한다 맨처음엔 탐색 대상으로 메소드에 주어진 y,x를 등록 그 다음 whi.. 2023. 12. 14.
[프로그래머스/17677] [1차] 뉴스 클러스터링 https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 자체는 단순 구현문제라 그리 어렵지 않았는데 집합의 특성상 어떤 데이터타입으로 구현하느냐에서 많이 헷갈렸다. 풀기전 아이디어 스케치 처음엔 집합이라 말그대로 Str1과 Str2을 HashSet을 사용해 풀려고했는데 다시 찬찬히 읽어보니 다중집합도 허용한대서 요소끼리 중복도 허용되는 데이터타입을 사용해야했다. 그래서 list를 사용해야하나?했으나 각각의 요소가 몇개 있는지 알아야한다는걸 이후 .. 2023. 12. 7.
[프로그래머스/17680] [1차] 캐시 https://school.programmers.co.kr/learn/courses/30/lessons/17680# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 컴퓨터 공학적인 문제처럼 보이지만 카카오는 코테에서 검색이 가능하기에 LRU알고리즘정도는 검색하고나서 구현하면 된다. 1트 검색이 가능하고, 순차적 저장이 가능한 데이터타입을 사용해야한다. 데이터 타입을 HashSet과 LinkedList중에 고민하였으나 HashSet은 삭제에서 비효율적일듯해 List로 결정 import java.util.*; class Solution { public int .. 2023. 12. 6.
[프로그래머스/150370] 개인정보 수집 유효기간 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이러한 Date처리 문자열문제인데 Date타입을 잘 안다뤄봐서 전부 String으로 잘라서 풀었다.. 여러분은 나처럼 무식하게 풀지 마시길.. PS) 잘못된 풀이인줄 알았는데 찾아보니 사람들 대부분 이렇게 풀었다.. import java.util.*; class Solution { public ArrayList solution(String today, String[] terms, Strin.. 2023. 12. 4.
[프로그래머스/그리디] 디스크 컨트롤러 우선 문제에서 요구하는 CS지식이 있어서 문제를 이해하는데 한참 걸렸다. 어떤 알고리즘을 사용해야하는가? 일단 문제를 보다보면 job이 이렇게 주어지니 job = [작업이 요청되는 시점, 작업의 소요시간]이라고할때 job을 요청되는 시점 기준으로 정렬해야한다는건 직관적으로 이해가 가능하다. 그렇다면 그 다음부터는 어떻게 작업해야할까? 우선 시뮬레이션처럼 코드로 요청사항을 구현한다고 치자 1. 맨처음 작업해야하는건 [0,3]일거다. 2. 그러면 0번째의 작업이 3초동안 작업하는동안 그 다음 요청들을 대기열에 걸어둔다. (3초동안 1번째 요청과 2번째 요청이 들어와있을것이다.) 3. 0번째의 작업이 끝나고나면 그 다음 요청을 작업한다. 여기서 헷갈리는건 3번이다. 다음 요청인 [1,9]가 아닌 [2,6]을 .. 2023. 11. 17.
[백준2559/투포인터] 수열 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 문제가 워낙 쉬워서 문제풀이 구상없이 바로 코딩했다. 1. 아이디어 - 연달아있는 세개를 더한값과 그 다음값을 더하고 인덱스 1의 값을 뺀값이 같은지 비교하며 max값 갈아치우기 2. 시간복잡도 - O(N) = 100,000 < 2억 (가능) 3. 변수 - max값 : int - 온도리스트 : int[] - 앞 포인터의 합, 뒷포인터의 합 를 기준으로 풀어보았다. 1트 public c.. 2023. 11. 15.