코딩 테스트 스터디/프로그래머스 14

[Level 2] 모음사전

문제 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 코딩 테스트 시즌이다 보니 자주 시험 보는 프로그래머스에 익숙해지려고 오랜만의 프로그래머스 문제를 셀렉(?)했다. 어떤 알고리즘을 쓸까 좀 고민은 했지만 첫 번째 제출에 통과! 근데 1점밖에 안 준 걸 보면 효율이 개똥인가보다. 내 생각에도 그럴 것 같은데... 문제는 이 부분이다. # 백트래킹 def backtracking(word, tmp_word): ..

[level 2] 튜플

문제 https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 오랜만에 프로그래머스 문제가 풀고 싶어져서 level 2 중에 하나 골라서 풀었다. 처음에 문제를 잘 이해 못해서 이상하게 풀었는데... 다시 문제를 천천히 읽고 다시 풀었더니 쉽게 풀어서 이제 "구현" 문제가 아닌 level2나 level 3를 위주로 풀면 될 것 같다. 이상하게 푼 버전은 다음과 같다. 순서를 고려해야 하는 줄 모르고 무조건 제일 긴 집..

[level 2] 양궁대회

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92342?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 level 2 문제인데... 풀지 못했다😥 이번주에 코딩테스트 스터디에서 백트래킹을 공부한 이후, 이 문제에도 백트래킹을 사용하면 해결될 것 같아 다시 도전해보려고 했다. 그런데 어떻게 시작해야할지 감도 못잡고 실패..ㅎ 블로그를 참고하니 역시 완전 탐색 문제가 맞는 것 같고 구현 방법은 combination / BFS / D..

[level 2] 주차 요금 계산

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 모각코 문제였는데 오늘은 참가하지 못해 나는 밤에 따로 풀었다. 시간 계산 때문에 예상한 시간을 살짝 넘겨서 풀었는데 점수를 1점밖에 안줘서 당황했다..?! 이유는 예상하긴 했지만 시간 복잡도가 극악이었다..! 지금까지 내 힘으로 푼 것중에 제일 별로라고 할 수 있을 정도. 아예 못풀었음 못풀었지 이건.... 한 번에 통과한 게 신기하네. 시간 날 때 코드..

[level 1] 비밀지도

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 삼성 SW 아카데미에서 (거의 유일하게 학습한) 비트 연산 문제였다! or 연산을 하면 되겠다는건 알았는데 파이썬에서 2진수 다루는 방법을 잘 몰라 검색해서 해결했다. 그리고 아래 첫 번째 제출 코드에서 겹치는 부분이 마음에 들지 않아 한 번만 쓰도록 if문을 변경했다. def solution(n, arr1, arr2): answer = [] for i i..

[level 3] N으로 표현

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42895?language=python3# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 DP문제... 점화식 너무 어려워...흐아앙 처음에 생각한 방식은 그냥 엉망진창이었고 질문하기에서 이 글의 도움을 받아 힌트를 얻었다... 그러고도 한참을 생각하다가 겨우 간신히 풀었는데 2개가 실패! 이게 틀린 코드인데 다시 보니 return이 N이 3일 때부터 가능해서 1부터 가능하도록 range 범위를 바꿔줬다. 1, ..

[level 3] 네트워크

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43162?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 앗 이 문제는 첫 번째 제출에서 3개의 테스트 케이스가 실패였다! 이게 틀린 코드인데 q.popleft() 해서 얻은 num에 대한 방문처리가 빠진 것 같았다. 그런데 코드를 다시 보니 방문처리 부분이 불필요하게 겹쳐서 num에 대한 방문처리만 남기고 수정했더니 통과했다. from collections import deque ..

[level 2] 게임 맵 최단거리

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 bfs로 풀었는데 간단한 편이라서 한 번에 통과! 추가로 효율성 점수가 있었는데 이게 높은건지 낮은건지 구분이 안가서 아래에서 다른 사람들의 코드도 돌려보았다. 실수할 뻔 한 건 처음에 무조건 N * N의 정사각형으로 입력이 주어지는 줄 알았는데 조건을 다시 읽어보니 N * M으로도 제시가 될 수 있지만 예시가 정사각형 모양인 것 뿐이었다..ㅎㅎ 항상 입출력..

[level 2] 오픈채팅방

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42888?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 이 문제 역시 쉬운 구현 문제여서 한 번에 통과! 이게 처음 내 코드인데 다른 사람 풀이를 보다 보니 느낀점이 있었다. split( ) 했을 때 바로 변수에 할당하려고 하면 개수가 달라서 나처럼 len( ) 으로 한 번 더 조건문을 붙여줘야 하는데 개수는 다르지만 op, user_id 순서까진 같아서 굳이 조건문으로 나누지 않..

[level 1] 신고 결과 받기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사용 언어 Python3 풀이 과정 좋은 풀이 방법이 생각나지 않아 defaultdict로 풀었는데 한 번에 맞긴 했다..! 일단 내 풀이에서는 개선할 부분이 보이지 않아 풀이를 그대로 올리는데 다른 사람 풀이를 보며 공부했다. 간단한 문제라서 그런지 시간도 뭐 눈에 띄게 느린 정돈 아닌 것 같다. 제출 답안 from collections import defaultdict def soluti..

[Level 1] 키패드 누르기

문제 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 사용 언어 Python3 풀이 과정 문제를 천천히 이해하며 풀었는데 로직은 다 맞는 것 같았는데 이상하게 띄엄 띄엄 6문제만 오답이었다. 차라리 틀릴거면 다 틀려야하는데 너어무 답답해서 테스트 케이스를 추가하고 내 머리의 정답과 비교했는데 운이 좋..

[Level 2] 정렬. 가장 큰 수

문제 https://programmers.co.kr/learn/courses/30/lessons/42746?language=python3 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 사용 언어 Python3 풀이 과정 처음에 풀었던 답안은 다음과 같다. 이것도 처음에 if문으로 case를 엄청 나누다가 이게 아닌것 같아 다 엎고 질문하기에서 힌트를 얻어 작성한 코드인데... 아래와 같이 틀린 케이스가 절반이나 돼서 ㅋㅋㅋㅋㅋㅋ 한숨 쉬고 틀린..

[Level 2] 스택/큐. 다리를 지나는 트럭

문제 https://programmers.co.kr/learn/courses/30/lessons/42583?language=python3 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 사용 언어 Python3 풀이 과정 하아... 변수 설정부터 뭐뭐가 필요한지 고민하고 처음으로 메모장에 의사코드를 먼저 작성해봤다. 작성하다 보니 의사코드와 살짝씩 달라졌지만 갈수록 어려운 문제를 풀 것이니 처음 방향 설정에 도움이 되는 것 같다. 그리고 처음으로 브레이크 포인트를 추가해 디버깅을 해..

[Level 2] 스택/큐. 프린터

문제 https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 사용 언어 Python3 풀이 과정 원래 인덱스를 어떻게 저장해야 하나 백준 24061번 문제를 풀면서도 머리 아프게 고민했던 문제인데...풀다가 풀다가 모르겠길래 구글링해서 힌트만 얻고 내 코드에 넣어 풀 수 있었다.바로 for index, value in enumerate문을 이용하여 원래 인덱스와 값을 묶은 튜플을 원소로 하..