호우동의 개발일지

Today :

article thumbnail
[Java/C++] 프로그래머스 Level 3 - 사라지는 발판
Algorithm/Programmers 2023. 9. 8. 19:13

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/92345 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2022 카카오 블라인드 코딩테스트에서 나왔던 문제. 문제 자체는 이해하기 쉬운데, 풀기는 너무 어렵다. 다른 사람들은 100점 방지용 문제라고도 하더라. 문제 핵심 및 풀이 해당 문제의 해결법 결론부터 말하자면, 해당 문제는 재귀와 백트래킹에 대해 정말 잘 이해하고 있거나, 미니맥스(MiniMax) 알고리즘을 알고 있어야 풀 수 있다. 미니맥스 알고리즘은 게임 이론 및 AI에서 사용하..

article thumbnail
[Java/C++] 프로그래머스 Level 3 - 110 옮기기
Algorithm/Programmers 2023. 9. 1. 15:13

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/77886?language=cpp [월간 코드 챌린지 시즌2]에 나온 문제라고 한다.문제는 짧아서 좋긴 한데, 풀기 어려웠다. 문제 핵심 및 풀이 우선순위 파악 이 문제에서 구해야 하는 것은 입력 숫자에 대해 사전순으로 가장 빠른 것을 찾는 것이다. 앞자리에 '0'이 많을수록 사전순으로 빠르다.110을 삽입할 때, 적어도 기존의 위치보다는 더 앞자리에 있어야 한다. 110을 삽입한다고 생각해 보자.만약 '0' 앞에 삽입한다면 이 자리에 있던 '0'은 원래 자리보다 3칸이나 더 뒤로 미뤄지는 것이다. 그래서 '0'이 있다면 뒤에 삽입하는 것이 사전순으로 이득일 것이다. 이런 식의 사고를 이어가..

article thumbnail
[Java/C++] 프로그래머스 Level 3 - 광고 삽입
Algorithm/Programmers 2023. 8. 29. 02:34

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/72414?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2021 카카오 블라인드 코딩 테스트에서 나온 문제 제한 시간을 두고 풀었을 때는, 감도 잡기 어려웠다. 처음에는 그리디처럼 생겨서 이리저리 정렬해 보다가 실패했다. 문제 핵심 및 풀이 누적합 누적합이라는 아이디어만 떠올리면, 해당 문제는 수월한데.. 떠올리기가 어렵다. 힌트를 얻을 수 있는 부분은 광고 누적 재생시간의 계산 방식이다. 임의에 시각에 시작해서 재생..

article thumbnail
[Java/C++] 프로그래머스 Level 3 - 기둥과 보 설치
Algorithm/Programmers 2023. 8. 21. 18:23

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/60061 [2020 카카오 블라인드]에서 나왔던 문제. 너무 생각을 복잡하게 하고, 이상하게 해서 오래 걸렸다. 문해력이 부족한 탓일까? 문제 핵심 및 풀이 제한 사항 분석 제한사항을 보면 n은 최대 100이기 때문에, 100x100이 한계이다. 또한 build_frame이라는 구조물의 설치/삭제 커맨드는 최대 1000개까지 들어온다. 100x100x1000 = 10^7 으로 완전탐색을 해도 상관이 없다. 구조물을 어떻게 표현할 것인가? 이것도 나름 생각이 필요했다. 문제에서 기둥은 위로 설치하고, 보는 오른쪽으로 설치한다고 했다. 그래서 이를 설치가 시작된 곳의 좌표로, 구조물을 표현했다..

[Java/C++] 프로그래머스 Level 3 - 코딩테스트 연습
Algorithm/Programmers 2023. 8. 18. 18:54

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/118668?l [2022 KAKAO TECH INTERNSHIP]에 나왔던 문제 현재 프로그래머스에서 정답률은 20%로 Level 3 중에서도 낮은데, 실제 시험에서는 훨씬 더 낮지 않았을까? 다른 사람이 푼걸 보니, 꽤나 풀이법이 다양하게 나오는 문제였다. 그리고 최적화를 아주 깐깐하게 보는 문제였다. 문제 핵심 및 풀이 행동의 선택지 생각하기 어떻게 보면 문제를 그냥 정리하는 것일 수도 있는데, 난 여기서 큰 힌트를 얻었다. 점수는 알고력과 코딩력이라는 2가지의 유형이 존재하므로, 이를 각각 A, B라고 두겠다. 초기 점수가 (A, B)라고 생각해 보자. 최단 시간을 얻기 위해 할 수 ..

[Java/C++] 프로그래머스 Level 2 - 스킬트리
Algorithm/Programmers 2023. 8. 14. 01:23

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/49993? [Summer/Winter Coding 2018~]로 태그가 나와있던데 아무튼 그렇다. 직관적이고 단순하게 생각하면 된다. 복잡하게 생각하면 더 어려워지는 문제인 것 같다. 문제 핵심 및 풀이 선행 스킬 관계 만들기 특정 스킬을 익히기 전에 익혀야 할 스킬을 선행 스킬이라고 하겠다. 이건 단순하게 꼬리물기 구조로 만들어주면 된다."BCD"가 규칙일 때, B → C → D라는 뜻인데, 연속적으로 이루어져 있다.. 이걸 부모 자식 관계로 한번 바꿔서 생각해 보자. C를 배우기 위해선 B가 필요하다. 즉, parent [C] = B가 된다. D라는 스킬을 배우기 위해선 B, C 2개를..

article thumbnail
[Java/C++] 프로그래머스 Level 3 - 상담원 인원
Algorithm/Programmers 2023. 8. 10. 18:58

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/214288 2023 현대 모비스 알고리즘 경진대회 예선에서 출제된 문제. 시간제한을 두고 풀 땐 실패했지만 집에서 천천히 풀어보니 아이디어가 쉽게 떠올랐던 문제 문제 핵심 및 풀이 시간 복잡도 파악 문제 해결을 위해 시간 복잡도를 계산해야 한다. 제한 사항을 살펴보자. 상담 유형은 최대 5개, 멘토의 수는 최대 20명, 상담 요청은 최대 300개까지이다. 문제에서 핵심적으로 해야 하는 것은 멘토 n명을 상담 유형 k에 적절히 분배하는 것이다. 만약 가능한 모든 경우의 수를 구해서 찾는다면 대략 얼마나 걸릴까? k = 5, n = 20이라고 가정하자. 각 유형별로 적어도 1명은 존재해야 하므..

[Java/C++] 프로그래머스 Level 3 - 에어컨
Algorithm/Programmers 2023. 8. 9. 16:25

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/214289 2023 현대 모비스 알고리즘 대회 예선에서 올라온 문제다. 프로그래머스에 카카오 기출 말고 다른 기업 것을 풀어보는 건 처음이었는데, 확실히 유형이 다르다는 것을 느꼈다. 문제가 나온 지 얼마 안 돼서 푼 사람이 70명 남짓밖에 되지 않았다. 그래서 참고할만한 인터넷 글은 없었는데, 다행히 질문 글에 해설 글을 참고하여 풀 수 있었다. 그렇게 여차저차 2일 만에 문제를 해결했다. 문제 핵심 및 풀이 희망 온도 마치 중요한 것처럼 적혀있지만, 희망온도라는 키워드에 속지 않도록 해야 한다. 문제 설명에서 보면 "희망 온도는 에어컨의 전원이 켜져 있는 동안 원하는 값을 변경할 수 있..