코딩테스트준비 13

프로그래머스 자물쇠와 열쇠 문제 풀이 - [세무민의 코딩일기]

ㅋ안녕하세요 세기무민입니다. 이번에 풀어볼 문제는 2020년도 카카오 블라인트 문제 중 하나인 자물쇠와 열쇠 문제입니다. 문제 설명 입출력 예시 문제 풀이 흠.... 개인적으로 일단 이번 문제에서 포인트는 배열 회전하는 것이라고 생각한다. 파이썬에서 배열 회전에 사용되는 내장 함수 중 Zip이라고 있는데 이걸 사용하여 0 / 90 / 180 / 270도 회전하여 한번씩 key를 넣어보면 되는 문제이다. 아래의 그림으로 좀더 쉽게 설명해보면 간단한 예시로 Lock과 Key의 값은 위와 같고 0도부터 하나씩 Lock에 Key를 넣어줍니다. 넣었을 때 Lock의 모든 값이 1이라면 True를 반환해주면 되고 0, 90, 180, 270도 회전하여 동일하게 하나씩 탐색했음에도 불구하고 모든값이 1인 경우가 없다..

[백준] 10423번 전기가 부족해(Java) - 세무민의 코딩일기

이번 포스팅에서 풀어본 문제는 "전기가 부족해"라는 문제입니다. 1. 문제 2. 입출력 및 예제 3. 문제 풀이 이번 문제는 가장 중요한 것이 3개의 발전소로 나눈다는 것이다. 따라서 이번 문제에서는 find를 이용하여 정점들을 탐색할 때 탐색한 경우 체크하는 것이 중요하다 . 아래의 그림을 통해서 이해해보자 위의 그림처럼 가정하여 풀어보도록 하자. 처음에는 발전소를 선택하지 않았기 때문에 모두 0의 값을 가진다. 발전소를 1,2,9번으로 선택하고 진행할 예정이다. 발전소를 선택했을 때 해당 발전소의 값(index)에는 체크를 해두면 된다. 양수의 값의 경우 겹칠 수 있기 때문에 음수의 값으로 체크하는 것이 중요하다.(boolean으로도 가능) 가장 짧은 간선인 2를 이어주고 7에 체크를 해준다. 다음으..

Algorithm/Baekjoon 2021.10.07

[세무민의 코딩일기] 프로그래머스 부족한 금액 계산하기 문제 풀이

오늘 포스팅은 프로그래머스에서 위클리 챌린지 1주차 문제인 "부족한 금액 계산하기"입니다. 퇴근 한 후에 머리 식힐 겸 풀어봤는데 생각보다 쉽게 풀어서 포스팅을 하게 되었네요..ㅎㅎ(이 문제가 쉬워요..) 1. 문제 설명 2. 입출력 예시 3. 문제 풀이 이 문제는 문제 설명보다 입출력 예시를 보면 바로 풀 수 있다. 말 그대로 놀이기구의 price와 count의 곱이 money보다 큰지 아니면 같거나 작은지를 구분해주면 됩니다. # 가장 표본인 답변 def solution(price, money, count): answer = -1 resultCheck = 0 for i in range(1, count + 1): resultCheck += price * i if(resultCheck = 0): answ..

[세무민의 코딩일기] 프로그래머스 짝지어 제거하기 문제 풀이

이번 포스팅에서 다룰 문제는 2017년도 팁스타운에서 제공 된 짝지어 제거하기 문제입니다. 이 문제를 풀면서 시간복잡도와 deque의 사용의 장점을 알 수 있었습니다. 1. 문제설명 2. 입출력 예 설명 3. 문제 풀이 이번 문제는 처음에 구상했던 방법은 같은 값이 나오는 i, i+1값을 제거해주면 됩니다. 이 때 방법의 차이로 시간복잡도 문제에 봉착할 수 있습니다. 제가 처음 생각했던 것은 s = s[:count]+s[count+2:]와 같이 같은 문자가 연속으로 존재한다면 해당 값을 제거하고 다시 새로운 문자열로 만들어줬습니다. 이 방법을 이용했더니 시간복잡도에 초과가 되었고 곰곰히 생각한 끝에 deque를 생각했습니다. 말 그대로 deque과 반복문을 이용해서 연속으로 들어있는 값이 있다면 dequ..

[세무민의 코딩일기] 보호소에서 중성화한 동물 문제 풀이

오랜만에 알고리즘 문제 풀이 포스팅으로 돌아왔습니다. 최근들어서 어떤 포스팅을 해야할지 고민도 많아졌고 재택에서 출퇴근으로 변경되서 시간이 조금 없다보니 틈틈히 포스팅 할 내용들을 찾다가 이번에 쿼리관련 코테 문제로 찾아오게 되었습니다. 1. 문제 설명 2. 예시 3. 문제 풀이 및 코드 테이블을 TB로 지칭하여서 풀이를 진행해보겠습니다. ANIMAL_INS|TB와 ANIMAL_OUT|TB에서 현재 찾아야 하는 값은 중성화가 되어서 나간 친구들을 찾는것이 중요합니다. 그렇다면 내가 해야할 방법은 SEX_UPON_INTAKE가 ANIMAL_INS|TB에서 중성화가 되지 않은 친구이면서 ANIMAL_OUTS|TB에서는 중성화가 된 친구들을 찾으면 되겠죠? 그렇다면 LEFT JOIN을 이용해서 해당 테이블을 ..

세무민의 알고가자 : 프로그래머스 이상한 문자 만들기 문제 풀기

오늘 풀어 볼 문제는 이상한 문자 만들기! 문제 설명 & 제한 사항 & 입출력 예시 문제 풀이 사실 이번 문제는 조금 이해가 안됬다. 문제가 어려워서 이해가 안된것이 아니라 쉬운데 왜 아스키코드로 접근하면 틀렸다고 하는지... 무튼 내가 접근했던 방법은 총 3가지! 1. 아스키 코드로 변환해서 대소문자를 변경해주기 2. str -> list -> str로 쪼개서 만들기 3. list 상태로 구분하기 3가지 중 정답은 3번이였다. 위에 문제를 접근하기 전 가장 먼저 체크해야 하는 부분은 홀수와 짝수를 구분해서 대소문자로 변경해주는 것인데 이는 X % 2 == 0이라는 조건이 만족한다면 대문자, 그렇지 않다면 소문자! 배열이 0부터 시작하기 때문에 잘 체크해야 한다. 무튼 아스키코드로 접근하려고 했던 방식은..

세무민의 알고가자 : 프로그래머스 폰켓몬 문제 풀기

오늘 풀어볼 문제는 폰켓몬! 바로 시작하겠습니다! 문제 설명 & 제한 사항 입출력 예시 풀이 우선 문제를 재대로 해석하지 않으면 어렵게 느낄 수 있습니다. 진짜 문제를 이해했다면 쉬운 문제라고 생각이 들더라구요! 위의 예를 잘 보시면 nums라는 배열의 총 개수 -> N 찾으려는 폰캣몬의 개수 -> N / 2 폰켓몬은 중복이 될 수 없다! 여기서 살짝 문제 푸는 방법을 아시겠죠? 결국에는 nums의 개수를 2로 나눈 값만큼 포켓몬을 찾되 중복되는 값이 아닌 최대값을 찾으면 됩니다. 여기서 포인트는 중복되는 값을 제거해준 값도 확인해주면 됩니다. 결론적으로 1. list -> 중복값 제거해주기 2. 개수 일치하는지 비교 코드 def solution(nums): result = len(nums) // 2 n..

세무민의 코딩일기 : 프로그래머스 다리를 지나는 트럭 문제 풀기

이번 문제는 다리를 지나는 트럭 문제! 이 문제는 기존에 Stack이나 Queue를 이용해서 문제를 푸는 걸 추천하지만 나는 list로 구현했당.... 사실 deque으로 구현했던 건 있으나 코드 실행은 문제 없지만 채점에서 실패한 것들이 존재해서..ㅎ 그냥 무난한 리스트로 ㅎ 문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7..

세무민의 코딩일기 : 프로그래머스 스킬트리 문제 풀기

확실한 건 그리디랑 동적 다이나믹 프로그래밍 공부를 안하다보니 멘탈은 괜찮아지구 쉬운 문제들만 풀어서 그런가... 오늘 4문제나 풀었다 ㅋㅋㅋㅋㅋㅋㅋㅋ 그 중 한문제를 소개해보면! 바로 스킬트리 문제! 이 문제는 Summer/Winter Coding에 속한 문제이다. 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 ..

세무민의 코딩일기 : 프로그래머스 크레인 인형뽑기 게임 문제 풀기

사실 동적 알고리즘과 그리디로 멘탈이 탈탈 털렸는데 이번 문제 풀고 멘탈이 회복된 느낌??...ㅎㅎ 일단 30분내로 한문제를 풀었다는 것으로 의미를 둬야겠다. 이번 문제는 2019년도 카카오톡 개발자 겨울 인턴십 문제 중 1개이다. 문제 설명 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한..