728x90

Dev/Algorithm 14

[Algorithm] 소수찾기 (에라토스테네스의 체)

코딩테스트의 정말 큰 문제점이 뭐냐면, 했던 걸 계속 까먹는다는거다. 내가 짱구를 굴려서 풀었으면 그 이후에 풀 때도 짱구를 굴려서 풀 수 있을건데, 도저히 솔루션을 못찾겠어서 타인의 정답을 참고하게 되면 이런 문제가 생긴다. 그 이유가 뭐냐면, 실제로 사용되는 수학적 개념들을 요구하는 문제가 있기 때문인데 이 대표적인 예가 최대공약수, 최소공배수찾기, 에라토스테네스의 체를 활용해 소수찾기 같은 문제들이 그렇다. 앞선 게시물에서 이 내용들을 언급했음에도 또 내가 이걸 작성하는 이유는 내가 저것들을 봤음에도 불구하고 까먹었기 때문이다. ㅎㅎ.. 사실 앞선 게시물에서는 제대로 이해했다기보단 솔루션 저장소같은 느낌으로 모르겠으면 또 보려고 쓴거라, 이번엔 제대로 이해한 내용 그대로 작성해볼 예정이다. 1. 소..

Dev/Algorithm 2023.08.02

[Algorithm] DFS (프로그래머스 타겟넘버 문제를 통한 이해)

오늘은 진짜 지금껏 나를 괴롭혀온 DFS / BFS 이해가 조금이나마 된 것 같아서 다른 사람은 나같은 개삽질하지말라고 한번 써본다. (요근래 개발관련 업로드가 별로 없었던게, 코테 준비때문에 안그래도 나쁜 머리 싸매고 살아서 기술 공부할 시간이 없었다..) 내가 구글링을 못하는건지 대부분의 구글링 결과가 Graph를 통한 구현 사례만 계속 보여줘서 전혀 이해를 못했고, 코테 예제를 본다고 해도 생각보다 많은 사람들이 제대로 설명해주는 글이 없고 풀이한 답안만 보여주는게 많았기 때문에 상당히 힘들었는데, 오늘에서야 진짜 어느정도 이해가 된다. 시점까지 와서 글을 작성할 수 있게 되었다. 솔직히 말해서 이정도 알기 시작하면 궤도에 올랐다. 코딩테스트에 응시해도 제대로 코딩테스트가 진행이 된다고 할 수 있을..

Dev/Algorithm 2023.06.23

[코딩테스트] 삼총사

오랜만에 코딩테스트 글을 쓰는데 내가 푼 풀이가 맞는것 같은데 도저히 안풀려서 결국 찾아왔다. 답을 보니까 내가 한거에서 반복문 시작지점을 +1 해주는 식으로 풀었던데.. 내가 생각을 잘못하고 있었던건가? 난 중복되는 배열까지 다 찾은 다음에 중복제거에 고생을 했는데 정답은 애초에 지나간 번호는 아예 돌아보지도 않았음... 문제 설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 ..

Dev/Algorithm 2023.05.31

[코딩테스트] 최대공약수와 최소공배수

저번에도 똑같은 게시물을 쓴것 같은데 그때는 솔직히 대충 보고 넘어갔던거라, 이번에 제대로 이해하고 정리해두려고 글을 남긴다. 사실 제일 간단한 방법은 최대공약수를 구하려면 그냥 1부터 주어진 수 중 작은 수까지 있는 애들을 싹 다 나눠보고 나머지가 0인 애들 추린 다음에 그중 제일 큰거 꺼내면 된다. 근데 이렇게 하면 코드도 길어지고, 오류가 꽤 생긴다. 1은 무조건 나눠떨어지니 1이 계속 추가 된다던가 하는 문제가 생기는데, 그거 극복하려면 유클리드 호제법이라고 불리는걸로 계산 하는게 속편하다. 유클리드 호제법 작은 수를 큰 수로 나눠서 나머지가 0이 아니면 그 나머지로 큰 수를 나눈다. 이 과정을 반복하다가 나머지가 0이 되었을 때 큰 수가 최대공약수다. 말로 써두니까 상당히 복잡한 느낌이 드는데 ..

Dev/Algorithm 2023.05.23

[코딩테스트] 옹알이

내가 너무 어렵게 생각하나보다. 그냥 심플하게 풀수 있는 문제도 괜히 꼬다가 문제 못품. 과하게 생각하지 말아야겠다... 문제 설명 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 15 babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다. 즉, 각 문자열의 가능..

Dev/Algorithm 2023.05.22

[코딩테스트] 평행

실마리는 찾아도 풀지 못하는 나레기.. 평행이면 선들의 기울기가 같을 경우라는거 까진 생각했는데, 1시간 내내 코드로 어캐 만들어낼지가 감이 안잡혀서 그냥 답봤다ㅠ 언젠가는 답 술술 나오면 좋겠다.. 제발.. 문제 설명 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 제한사항 dots의 길이 = 4 dots의 원소는 [x, y] 형태이며 x, y는 정수입니다. 0 ≤ x, y ≤ 100 서로 다른 두개 이상의 점이 겹치는 경우는 없습니다. 두 ..

Dev/Algorithm 2023.05.22

[코딩테스트] 겹치는 선분의 길이

정답률 내려가니까 그냥 맛이 갔다. 내 뇌에서 처리가 안된다. 솔루션 찾는 방향 자체가 떠오르지가 않는데 이거 진짜 어떻게 해야하지? 풀이 찾아보니까 배열에 선분 길이만큼 인덱스마다 1씩 더해주고 이게 2이상인 부분들 갯수 구하면 된다고 써둔걸 보니까 바로 아.. 그러네... 응용이 안된다 나는.. 라는 허탈함이 몰려와버린다. 주륵.. 문제 설명 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, ..

Dev/Algorithm 2023.05.22

[코딩테스트] 안전지대

이번에 만난 문제가 lv.0 최고 어려운 문제 아닐까...? 정답률 30% 대도 있긴한데 계속 정답률 높은거만 풀어봐서 뭔가 한계에 부딪혀버렸다. 아무리 해도 안돼서 결국 구글링 했는데 진짜 하나하나 다 설정해두고 찾아야하는 거였다. (코테는 편한 길이 없나봐... 내 코드가 아니니 출처 남기고 기록 해둬야지..) 출처 : https://leejams.github.io/%EC%95%88%EC%A0%84%EC%A7%80%EB%8C%80/ function solution(board) { // 위, 아래, 좌, 우, 대각선 칸 확인을 위한 셋팅입니다. const dx = [1, 0, -1, 0, 1, 1, -1, -1]; const dy = [0, 1, 0, -1, 1, -1, 1, -1]; // 정사각형이기..

Dev/Algorithm 2023.05.19

[코딩테스트] 다항식 더하기

오랜만에 위기를 맞았다.. 술술 잘풀어나갔는데, 며칠 안풀었다고 그냥 자바스크립트 문법이 기억이 안나버림..(사실 뭐써야할지 감도 못잡음..) 위기를 맞은 문제는 다항식 더하기라고 프로그래머스 lv.0문제 중에 정답률이 낮은 편에 속하는건데 이제 이런거 밖에 안남아서 진짜 큰일이다. 꾸준히 해야겠다. 문제 설명 한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다. 제한사항 0

Dev/Algorithm 2023.05.17

[Algorithm] 큐와 스택(Queue, Stack) 그리고 트리(Tree)

알고리즘을 시작하기 전에 자료구조라는 것을 알아야한다고 해서 봤는데, 정보처리기사 따던 시점에 봤던 말들이 나와있어서 좀 반가웠다. 그런 김에 복습 겸 살짝 정리해보고자 한다. 1) Queue (큐) Queue는 위 아래 구멍이 뚫려있는 원통으로 생각해보면 좋다. 일단 정보처리기사를 공부하던 나는 이렇게 이해했고, 교재에서도 제시하니 가장 명확한 설명이 아닐까 싶다. 위의 그림과 같이 Queue는 입구와 출구가 정해져있다. 한쪽으로는 데이터를 꺼내고, 한쪽에서는 데이터를 넣기만 하도록 구조를 잡는다고 보면 된다. 이런 모양을 가지고 있게 되면 처음 넣은 요소가 꺼낼때도 가장 처음으로 나오게 되는데 이를 'FIFO' (First In First Out) 라고 부른다. 쉽게 이해하기 위해 JS 코드로 한번 ..

Dev/Algorithm 2023.04.17
728x90