본문 바로가기

프로그래머스 풀이/Lv 2

(30)
프로그래머스 - 2020 KAKAO BLIND RECRUITMENT괄호 변환 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 재귀를 사용한 구현 문제이다.  stack을 사용해 괄호가 올바른지 확인하는 것에다가 추가적인 요소를 덧붙힌 문제이다.  카카오에서 요즘은 이런 문제가 안나오는거 같은데 예전엔 구현을 자주 시킨 것 같다. #include #include #include #include using namespace std;bool check(string s){ stack stk1; for(int i ..
프로그래머스 - 2018 KAKAO BLIND RECRUITMENT[3차] 방금그곡 https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 시간을 정말 빡세게 잡았다면, 은근 귀찮은 파싱과 KMP나 라빈-카프 알고리즘을 사용해야했을 것이다. 하지만 이 문제는 그런 고급 문자열 검색 알고리즘까지 요구하진 않을것이다. 다만 C#, G# 같은 단어를 하나의 단어로 치환해주는 작업이 필요하다.  그런데 만약 여기서 음악이 나오는 시간을 00:00~23.59 라고 하면, 23 * 60 + 59 = 2,070,721 이고 이것을 O(N^2) 하면 ..
프로그래머스 - 2018 KAKAO BLIND RECRUITMENT[3차] 파일명 정렬 https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 주어진 문자열을 조건에 맞게 HEAD, NUMBER, TAIL을 분리하고 그에 따른 정렬을 사용하면 된다. 그런데 중요한 것은  HEAD 와 NUMBER가 같을 경우엔 TAIL이 달라도 순서를 그대로 진행시켜야한다. 같은 우선순위를 가진 경우를 컨트롤하는 것이 문제의 관건이다.  C++ Algorithm의 sort는 불안정 정렬이다. 만약 A B C D 에서 sort했을 때 A와 B의 우선순위가 같다..
프로그래머스 - 두 큐 합 같게 만들기 [2022 KAKAO TECH INTERNSHIP] https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음 문제를 접했을 때 "최소비용", "최소거리" 등이 보이면 가장 먼저 생각나는 건 BFS, 다익스트라 등이다. 그래서 그렇게 생각했는데 방문체크를 할 수가 없었다. 그리고 이 문제의 의도는 Greedy 알고리즘이다. 두 합이 같아져야 하므로 언제나 큰 쪽에서 작은 쪽으로 pop하여 푸쉬하는 것이다. 그리고 최대까지 모두 돌았는데도 정답이 아니라면 이것은 방법이 없는 것으로..
프로그래머스 - 오픈 채팅방(C++) https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 카카오 2019년 기출문제로 코딩테스트에서 자주 출제되는 맵을 적절히 사용해야하는 문제이다. Insert가 들어오면 맵에 만약 유저 아이디가 존재하면 갱신하고 없으면 추가한다.체인지가 들어오면 맵 유저 아이디 key에서 닉네임을 교체한다. 그리고 insert와 leave가 들어오면 순서 벡터에 유저 아이디와 나가고 들어감을 표시해둔다.그리고 이후 순서 벡터대로 결과를 출력하면 된다. 그렇게 어렵진 않..
프로그래머스 - k진수에서 소수 개수 구하기 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/92335?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 0으로 split 작업을 하고 소수를 판별하는 문제이다.소수판별에는 여려가지 방법이 있다. 1. O(N)이 걸리는 가장 기본적인 방법2. 에라토스테네스의 체3. 오일러의 체 오일러의 체는 정말 코드포스같은 경쟁적 프로그래밍에서 필요하지만, 여기선 이렇게까지 딥하게 소수를 찾을 필욘 없다. 비효율적이다.https://ps.mjstudio.net/linear-sieve  PS를 위..
프로그래머스 - [3차]압축 (C++, Java) https://school.programmers.co.kr/learn/courses/30/lessons/17684?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문자열 구현 문제이다. 지문을 이해하는 것이 가장 핵심이고 주어진 알고리즘을 그대로 구현할 수 있는지 물어보고 있다.이런 종류의 문제는 난이도 있는 코딩테스트의 1번으로 주어질만하다. 그리고 설명을 그대로 따라하지 않으면 분명 예외 케이스가 있기 때문에 본인의 자아를 빼고 있는 그대로 구현하는 것이 핵심이다. 개인적으로 항상 이런 디테일을 요하는 문제에서 한번에 AC를 받지..
프로그래머스 - 방문 길이 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 구현문제다. 방문 알고리즘이라고 봐야할까 싶다. 주어진 대로 이동하는 경로를 새야하는데 단순히 방문체크만해서는 풀 수 없다. 3차원 배열을 선언하고 A노드에는 4방향으로 들어올 수 있기 때문에 각 방향마다 방문체크를 해줘야한다. 그리고 중요한 것은 A -> B로 이동했다면 B -> A 도 지난 길이 되기 때문에 체크해놓아야한다. 이것을 눈치채지 못해 풀지 못했다.. #include #include u..