호우동의 개발일지

Today :

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일 만에 문제를 해결했다. 문제 핵심 및 풀이 희망 온도 마치 중요한 것처럼 적혀있지만, 희망온도라는 키워드에 속지 않도록 해야 한다. 문제 설명에서 보면 "희망 온도는 에어컨의 전원이 켜져 있는 동안 원하는 값을 변경할 수 있..

[Java/C++] 프로그래머스 Level 2 - [3차] 방금그곡
Algorithm/Programmers 2023. 8. 6. 16:02

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/17683? 2018 카카오 블라인드 3차 코딩 테스트에서 나왔던 문제단순 구현 문제라고 생각되는데, 생각보다 구현해야 하는 함수 부분이 많아서 잘 정리하는 게 중요했다. 또한 예외 케이스가 많은 문제여서 테스트 케이스를 잘 짜는 것이 중요했다. 문제 핵심 및 풀이 멜로디와 일치하는 곡 찾기의 문제 멜로디(m)가 곡(musicInfo) 안에 있는지 확인하는 과정은, 일반적으로는 문자열 비교로 하면 된다. 하지만 입출력 예시 3번에서 볼 수 있듯이 #이 문제가 된다. 일반적인 문자열 비교로 찾을 때는, m = "ABC" , musicInfo = "ABC#" 일 때, 조건 일치로 판단한다. 그래..