목록- (95)
olrlobt
https://www.acmicpc.net/problem/2212 🔒 골드5 - #2212 센서 📌 테스트케이스 추가 힌트 6 2 1 6 3 3 4 3 = 3 9 3 1 3 5 5 8 9 10 11 16 = 7 ✍️ 풀이법 문제를 보자마자, 정렬은 해 놓아야 한다고 생각했다. 그 후, 임의로 몇 개의 테스트케이스를 만들면서 푸는 방법을 생각해 보았다. 먼저 첫번째 테스트 케이스 6 2 1 6 3 3 4 3 = 3 이해를 위해 그림으로 나타내면 다음 사진과 같고, 집중국 2개가 위치해야 될 곳은 다음 사진과 같다. 위 그림을 보면 알 수 있는 것은 A) 집중국은 센서 위에 위치해야 한다. - 센서 위에 있어야 하나의 센서라도 감지 영역을 0으로 만들 수 있다. B) 집중국의 개수대로 센서 뭉텅이가 생긴다...
https://www.woowahan.com/ 배달의 민족 운영사인 우아한 형제들에서 운영하는 개발자 양성 프로젝트, 우아한 테크코스에 지원하게 되었다. 지원 동기 대학교 4학년 졸업을 앞 둔 시점, 국비 교육에서 프로젝트를 진행하며, 취업이 점차 다가온다는 것을 느낀 나는, 취업을 위해 코딩 테스트 준비를 하기 시작했다. 하지만 코딩 테스트를 준비할수록, 내가 원하는 기업에 갈 수 있을지 너무나도 불투명해졌다. 마냥 프로젝트와 코테 준비로 바쁘던 중, 아는 형의 추천으로 우아한 테크코스를 접하게 되었고, 나를 좋은 개발자로 성장시켜 줄 수 있는 부트캠프라는 확신이 들자 지원하게 되었다. 지원서 지원할 당시에는 코딩만 잘 하면 된다는 생각이 컸어서, 지원서에 많은 신경을 쓰지 않았던 것 같다. 하지만 지..
🔒 골드4 - #14500 테트로미노 https://www.acmicpc.net/problem/14500 ✍️ 풀이법 해당문제는 간단하게 해석하자면, 4개의 붙어있는 숫자들의 합이 가장 큰 값을 찾는 문제였다. 모든 경우의 수를 다 돌아야 답을 구할 수 있기 때문에 DFS를 사용하였으며, 시작 좌표에서부터 DFS를 시작하기 때문에, 배열을 복사해서 넘겨주면서 풀었다. 풀이는 간단히 처음 시작한 자리에서 오른쪽 > 아래쪽 > 왼쪽 순으로 검증을 진행하면 풀겠다고 판단하여, 바로 풀이를 진행했다. 하지만, 테스트케이스 3번의 예제처럼 ㅏ ㅓ ㅗ ㅜ 의 경우에 대한 생각을 못한 풀이법이었고, 3번의 경우를 해결하기 위하여 solve() 하단부분의 if 문으로 깔끔하지는 못하게 해결한 문제였다. 🗝️ 풀이 im..
🔒 2단계 - k진수에서 소수 개수 구하기 📌 테스트케이스 추가 힌트 1번, 11번에서 런타임 에러가 난다면, Parameters n 1000000 k 2 Return X n값에 최대값을 넣어 값이 잘 나오는 지 확인해 보고, 숫자가 넘어가는 과정을 생각해본다. ✍️ 풀이법 해당 문제에서 [211,2,11을 k진법으로 보았을 때가 아닌, 10진법으로 보았을 때] 라는 문구는 10진법으로 변환하라는 것이 아니라는 것에 주의한다. 1. 주어진 n을 k진법으로 변환한다. 변환을 할때, n을 k로 나눈 나머지를 이어 붙여서, 뒤집어 주어야 k진법으로 완벽히 변환 된다. 2. k진법으로 변환한 수를 0으로 split한다. 3. split 한 문자열을 10진법으로 보았을때, 소수인지 판별한다. (2진법 11을 10..
🔒 2단계 - n^2배열 자르기 입출력 예시 📌 테스트케이스 추가 힌트 해당 문제는 gif 설명이 잘 되어 있어, 추가 테스트 케이스가 필요하지 않았다. ❌ 풀이법 #메모리 초과 실패 해당 문제는 알고리즘을 생각 할 필요 없이, 애니메이션으로 잘 보여주고 있기 때문에 입출력 예시를 그대로 코드로 옮겼다. 하지만, 공간복잡도와 시간 복잡도를 생각하지 않는 방법이기 때문에 메모리 초과 실패와 시간초과 실패를 겪었다. ❌ 풀이 #메모리 초과 실패 import java.util.*; class Solution { public int[] solution(int n, long left, long right) { int[] answer = new int[(int)(right-left+1)]; List rows = n..
🔒 2단계 - 괄호 회전하기 📌 테스트케이스 추가 힌트 해당 문제는 추가 테스트케이스가 필요하지 않았다. ✍️ 풀이법 나는 이 문제를 보자마자, 스택으로 해결해야 하는 문제라고 생각했다. 문제를 이해하는 것 자체는 최단시간이 걸렸지만, 문제를 해결함에 있어서 생각해야 할 것들이 있었다. - 생각 해야 할 것 1. 열리는 괄호와 닫히는 괄호를 어떻게 매치하여 줄 것인가. 해당 문제에서 무턱대고 열리는 괄호 '(' 가 닫히는 괄호 ')'를 만난다는 if문을 사용하게 되면, 문제는 당연히 해결이 가능하지만 코드 자체는 매우 더러워 질 것이다. 2. 문자열 s를 돌리는 방법 단순히 substring을 사용하여 쪼갠다면, 문제 해결은 가능하지만 객체 생성을 많이 반복하게 되어, 좋지 ..
🔒 2단계 - 캐시 🤔 문제 이해 해당 문제는 CACHE와 LRU(Least Recently Used)에 관한 이해가 필요했다. 흔히 아는 CACHE. 내가 이미 방문한 홈페이지를 재방문한다면 처음 이 페이지를 방문했을때보다, 일찍 로드 된 것을 느껴본 적이 있을 것이다. 이것이 CACHE가 페이지가 저장되어 있기 때문. LRU는 캐시에 대한 알고리즘으로, CACHE가 꽉 찼을때, 가장 오래된 CACHE를 제거하는 기법이다. 이 문제에서는 CACHE HIT 과 CACHE MISS만 파악하면 된다. 아래 그림에서 HIT이라 쓰여진 부분이 HIT, 글씨가 없는 부붙이 MISS 이다. 간단히, 이미 캐시에 저장되어 있는 자료라면, HIT을 발생시킨다. 예로, 그림 3번째 줄 부분을 보면, 이 전 CACHE [..
🔒 2단계 - 위장 📌 테스트케이스 추가 힌트 Parameters [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"],["red_hat", "headgear"],["red_sunglasses", "eyewear"],["red_top", "top"]] Return 23 Parameters [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"],["red_top", "top"],["blue_jean", "bottom"]] Return 23 ✍️ 풀이법 해당 문제의 경우 알고리즘을 생각해 내는 시간..