string을 담은 배열이 주어지고 타겟을 배열에서 찾아 string을 반환하는 문제. 일단 가장 먼저 생각난 건 indexOf다른 사람 풀이 보니까 for를 안 해도 되는데 했다. 아직 문제에 대한 정확한 이해가 없어서 그런 거 같다!
string인데 길이가 4 혹은 6, 숫자로만 구성 되어있는지 필터해서 true, false를 return하면 된다. fliter로 해보자filter는 요소를 검사해서 배열 길이를 기준으로 fitler 못 하는 거 같다. 그래서 for문에서 if로 검사했다.isNaN(
typeOf로 검사할 수도 있다. for문으로 빈 배열에 추가 생각했는데 첫 번째만 바꾸고 뒤에는 slice로 붙이면 된다. includes 쓸 때마다 헷갈렸는데 str를 통으로 넣어도 된다. includes는 boolean 반환한다.이런 걸 보면 항상 if를 떠올리고
str이 짝수라면 가운데 두 글자, 홀수라면 가운데 글자를 반환. splice 혹 slice로 푸는 문제인 거 같다.return에 메소드 안에 삼항을 쓸 생각은 못 했다. start index는 같고 짝홀에 따라 달라지는 것이니까 충분히 삼항으로도 쓸 수 있다!
for문해서 i만큼 str에 더하면 될 거 같다. if가 들어가면 삼항으로 처리할 수 있는데 아직 생각이 잘 나지 않는다. 가장 깔끔한 것 같다. 빌런
일단 sort가 있다. 조건 중 대문자는 소문자보다 작은 것으로 간주가 있는데 어떻게 접근해야할지 아직 모르겠다.sort해도 안 먹어서 찾아보니까 sort()는 대문자가 소문자보다 앞에 오도록한다. 이렇게 하면 안 먹고 저렇게 풀어서 써야지 먹는다. 이유는 모르겠다.
filtered 함수는 1이상 4이하인 요소를 찾아 반환한다. sort를 써서 푸는 문제인 줄 알았는데 filter로도 if처럼 조건에 맞게 정리할 수 있다. 범위에 속하지 않는 요소를 삭제하는 것이다. filter에서 헤어나오지 못해 filter로 !==을 써서 삭제
if로 검사하면 쉽게 풀릴 것이라고 생각했는데 빈 배열일 때 -1을 어떤 식으로 줄까 헷갈렸다. if if로 한 것으로 보아 아직 if에 대한 완벽한 이해가 없다고 생각했다. 이렇게 했더니 30점 맞았다. 첫 번째 if를 다 돌고 두 번째 if를 돌면서 result.l
for 시작 끝을 a, b로 정해서 사이 수를 가져오면 되는데 a,b의 대수를 정해주는 것이 헷갈렸다. 설핏 기억으로 삼항으로 할 수 있었던 거 같은데 도저히 안되서 원시적인 방법으로 해결. 나의 코딩 풀이는 아직 구석기 시대에 머무르고 있지만 언젠가 신석기 혁명 간다
두 인자가 지워지면 최대공약수, 최대공배수를 포함한 배열을 리턴한다. 약수란 어떤 수를 나누었을 때 떨어지는 수다. 1과 자기 자신 밖에 존재하지 않으면 소수최대 공약수 구하기두 수의 max,min을 정하고 나머지를 구한다. 이제 다음 턴에 min값이 max가 되고 나
약간 정렬 문제의 기초 단계인듯. sort하고 제일 작은 수 고르는 게 제일 빠를 거 같지만 제일 작은 것만 제거하면 되니까! \--> 대실패. sort는 아닌 거 같다. 나란 멍청한 녀석. sort로 배열 순서를 바꾸면 안되고 그냥 가장 작은 값만 제거 해야한다.
달력 만들면서 new Date를 엄청 많이 해봐서 금방 생각났다. 뭔가 멋지다. getDay를 안 썼는데 getDay를 안 쓰고 푸는 방법은 몰랐다!뜨끔..그래서 매서드를 안 쓰고 다시 풀기로 했다! 내일 풀어보장!
단순히 이중for로 풀려고 했는데 테이스 케이스가 계속 실패했다. 정확한 이유는 모르겠는데 공백 기준으로 짝홀의 reset되서 그런 것 같다. 질문하기를 참고하니 인덱스 리셋하는 것으로 하라고 해서 예전에 했던 type writing이 생각나 그렇게 접근하기로!계속 여
진짜 직관적으로 생각나는대로 풀었다. 일단 string 다루는 게 익숙하지 않아 안전하게 배열에 넣고 빼느라 코드가 지저분해졌고 있는 메서드 다 쓰느라 가독성이 많이 떨어진다! 2회차 때는 조금 성숙한 방법으로 풀었다!!!
정렬된 배열에서 특정 값을 찾는다. 배열의 중간값과 비교해서 없다며 값이 존재할 수 없는(크거나 작은)배열을 삭제하고 나머지 배열의 반을 가른다. low, high를 배열의 처음과 시작으로 정하고 while을 돌리는데 low가 hight보다 크면 중단한다. mid는 배
탐욕 탐색법이라 불리는 이 친구는 매 순간 최선의 선택을 한다! 가장 인간과 비슷해서 그런지 그리디 친구한테 정이 많이 갔지만 한 번도 써 본적이 없기에 공부를 해보려고 한다. 그리디는 보통 잔돈 문제나 거스름돈 문제에서 많이 나온다.예시는 블로그에서 따왔다. 먼저 w
문제 풀이 ![](https://images.velog.io/images/dongha1992/post/ab77bfef-6677-46d6-8f35-0b7e6683359e/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%
문제 내 풀이 ![](https://images.velog.io/images/dongha1992/post/f8f36d21-c722-4a32-af6e-814b6bd073ae/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-11-1...
문제 내 풀이 ![](https://images.velog.io/images/dongha1992/post/95f16b6e-332b-484c-8870-97782d0b836a/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-11-13...
풀이는 나중에 정리!
문제풀이는 나중에!나 좀 잘 푼 거 같아서 다른 사람 풀이는 없다!
자바스크립트에서 실수 판별은 n % !== 0으로 한다!
나를 괴롭히는 소수를 부수자
최대공약수와 최소공배수는 고등학교를 졸업하면서 만날 일이 없다고 생각했다. 마치 오래 전에 이별한 전 애인과 재회하는 기분으로..
역시 세상은 호락호락 하지 않다.
중학교 2학년 때 수학 선생님이 말씀하셨다. 졸업하고 피보나치 수열 안 볼 거 같지? 속으로 피식 웃었다. 하지만 오늘이 되어야 그 선생님이 15년 앞을 내다보았다는 것을 깨달았다.
이제 이런 문제는 많이 풀어봤잖아
호준아 제대로 도와주지 못해 미안해..
스택과 큐는 나를 설레게 해
문제내 풀이처음에 타켓과 각 차이를 담는데 이중배열로 했다가 나중에 정렬하기가 힘들어서 객체에 담아서 정렬했다!좀 더 깔끔하게 풀고 싶은데... 컴퓨터스럽지 않은 느낌!!출처 : 제주코딩캠프
오랜만에 깔끔하게
문제 내 풀이while 안에 if가 두 번 있어서 좀 지저분한데 답안 보니까 답안이 더 지저분한 거 같기도 하고.. 나머지랑 몫이랑 섞어서 사용하는 게 아직 익숙하지 않다. 답안출처 : 제주코딩캠프
K-리스트
할 수 있어 김동하
민규야 이상한 거 하지 말고 집에서 코딩이나 해
재귀에 꽂혀 두 시간 쓰라린 여정을 떠나다.
우리 소수 많이 구해봤잖아
모퉁이만 돌면 희망이 있다
울지마 김동하
때론 돌아가는 길을 찾는 게 더 힘들 때도 있다.
K는 어려워
슬라이딩 윈도우란 배열이나 리스트 요소의 일정 범위 값을 비교할 때 유용한 알고리즘 정수 배열에서 연속된 정수들의 최대 합을 구할 때 사용된다 예제문제 나는 이 문제를 for문에서 i, i+1, i+2 로 찾았는데 슬라이딩 윈도우으로 효율적으로 풀 수 있다(내가 했던 다 찾는 방식은 뭐가 문제인지는 모르겠음) 이렇게 일 때, 투 포인터로 정수 요소 3...
동적계획법이란? 큰 문제를 작은 단위로 쪼개서 푸는 법 점화식을 사용한다. 이런 식으로 재귀적으로 전체 문제를 푼다 대표적인 문제로 피보나치 수열, 배낭 문제 등이 있음 예시 문제 도착점을 가장 적은 수부터 정하고 풀어본다. 도착점이 1일 경우, 1가지
삽입 정렬 왼쪽에서 오른쪽으로 가면서 각 요소들을 왼쪽 요소와 비교하여 알맞은 자리에 삽입하는 형식의 정렬 방법. 왼쪽 비교 대상 데이터들이 정렬 되어 있다는 가정 하에 진행 메모리가 절약되지만 자료 개수가 많아지면 성능이 매우 떨어짐 arr[i]를 tmp에 할당 그리고 j는 i기준으로 왼쪽으로 돌면서 tmp과 비교한다. arr[j]가 tmp보다 ...
투 포인터란 리스트에 순차적으로 접근해야할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘 정렬되어 있는 두 리스트의 합집합에도 사용됨 예제 : 어떤 숫자들의 리스트가 주어질 때, 해당 리스트의 연속 수열의 합이 특정 값을 가지는 것을 확인하는 문제
그래프란? 그래프는 트리(Tree)를 포괄한 개념 구조가 복잡한 자료 구조는 선형 구조나 트리로 표현 불가 연결되어 있는 원소 간의 관계를 표현하는 자료 구조 그래프 구성 정점(Vertex)와 객체를 연결하는 간선(Edge)로 구성 그래프 G를 G = (V, E)로 정의한다. 그래프 종류 1. 무방향 그래프 간선에 방향이 없는 그래프 양쪽으로 다...
이차원 배열에서 영역 지정 문제
신춘 시즌이 끝나 다시 개발로 돌아왔다...! Heap 힙은 트리 기반 자료구조다. 힙은 크게 두 가지로 나뉘는데 Max heap과 Min heap이 있다. Max heap : 부모 노드가 항상 자식 노드보다 크거나 같음 Min heap : 부모 노드가 항상 자식
문제 합승 택시 요금 > 4→1→5 : A, B가 합승하여 택시를 이용합니다. 예상 택시요금은 10 + 24 = 34원 입니다. 5→6 : A가 혼자 택시를 이용합니다. 예상 택시요금은 2원 입니다. 5→3→2 : B가 혼자 택시를 이용합니다. 예상 택시요금은 24 + 22 = 46원 입니다. A, B 모두 귀가 완료까지 예상되는 최저 택시요금은 34 +...
문제 다단계 칫솔 판매 > 판매원 young 에 의하여 1,200 원의 이익이 발생했습니다. young 은 이 중 10% 에 해당하는 120 원을, 자신을 조직에 참여시킨 추천인인 edward 에게 배분하고 자신은 나머지인 1,080 원을 가집니다. edward 는 young 에게서 받은 120 원 중 10% 인 12 원을 mary 에게 배분하고 자신은 ...
문제 [PCCP 기출문제] 2번 / 석유 시추 풀이 가장 많은 석유를 지나치는 컬럼을 찾고 그 석유 수를 반환하며 된다 섬 개수 세기의 변형 문제. 최대 개수를 세는 문제이므로 dfs 컬럼을 기준으로 석유를 세면 중복이 발생한다. 1번, 2번, 3번 컬럼은 동일하게 9개임 중복으로 dfs 하게 되면 시간초과남 visited 배열을 만들어서 df...
문제 프로그래머스 단어 변환 풀이 변화에 대한 최소 과정이므로 BFS queue에서 꺼낸 단어 중 차이가 1인 단어로 변환하면서 중복 방문을 막기 위해 visited 필요 코드 정리 1년 전인가에 풀 때 못 풀었던 문제인데, 생각보다 쉽게 풀려서 뿌듯했음
문제 자연수 뒤집어서 배열로 만들기 풀이 n을 먼저 string으로 변환하고, string의 length 만큼의 int[]를 생성한다 string을 순회하면서 마지막 index부터 int[]에 할당한다. 코드 정리 java에서 형변환하는 건 아직도 익숙하지 않음. for loop을 돌 때 index을 잘못 설정했는데 곧바로 StringIndexO...
문제 평균구하기 풀이 배열의 모든 원소 값을 더한 후 배열의 lengh로 나눈다. 코드 정리 처음에 연속된 원소인 줄 알고 투 포인터로 했다가 아닌 걸 알았지만 그냥 풀었다. 순회는 반으로 줄일 수 있다. for문으로 선형탐색하는 거랑 위 코드랑 둘 다 빅오는 n이긴 하지만 위 코드는 순회는 반만 하니까 n이 커질 때 아주 조금은 빠를 줄 알았는데...
문제 완주하지 못한 선수 풀이 해시맵으로 참여 인원을 카운팅한다. 다시 해시맵으로 완주 인원을 제외한다. 해시맵에 남았다면 완주하지 못 한 것 코드 정리 해시맵에 값을 넣을 때 getOrDefault를 사용하면 null 체크도 같이 해준다 참가자 배열, 완주자 배열을 sort하고 for문을 순회하는 방식도 있는데, 해시맵으로 풀어봤다
문제 같은 숫자는 싫어 풀이 순서를 보장해야하기 때문에 Hash는 불가능 for문 순회로 풀면 시간복잡도는 O(n) for문도 가능하지만 문제 유형이 stack이니 stack으로 품 코드 정리 자료구조를 util로 제공하는 java 짱임..
문제 [Relative Ranks] (https://leetcode.com/problems/relative-ranks/) 풀이 HashMap 사용 int 배열 중 가장 높은 순위 1, 2, 3을 각각 string으로 맵핑해야 한다. 3위 밖은 차례대로 rank 값으로 치환해줘야 함 Gold, Silver, Bronze의 Enum과 rank를 ...
문제 [Kth Largest Element in a Stream] (https://leetcode.com/problems/kth-largest-element-in-a-stream/) 풀이 int가 계속 추가되지만 매번 3번째로 큰 수를 반환해야 한다. min heap으로 풀이 가능 코드 정리 poll을 하게 되면 최소값을 반환한다. k보다 size가...
문제 [Search in a Binary Search Tree] https://leetcode.com/problems/search-in-a-binary-search-tree/description/ 풀이 val을 찾을 때까지 재귀를 돈다. val을 찾으면 해당 서브트리를 반환 이진탐색트리를 특성으로 logN으로 탐색 가능 코드 정리
문제 [입국심사] 풀이 입국 심사를 기다리는 사람 수(n)와 심사관이 한 명 심사를 하는데 걸리는 시간(times[i])가 1,000,000,000이므로 O(n)을 넘으면 안됨. 엄청나게 큰 n과 특정값 구하기므로 일단 이진탐색을 생각할 수 있음 결국, 심사관의 배열 times를 순회하면서 풀어햐 한다. 최대 100,000이니까 모든 승객을 심사하는...
문제 [Symmetric Tree] 풀이 같은 레벨에 있는 트리의 노드가 대칭인지 판별하는 문제 같은 레벨 노드를 검사해야하기 때문에 bfs가 적합함 while문에서 검사 노드 두 개 (left, right라 칭함)를 꺼내서 검사하고 대칭으로 add 해주면 됨 코드 정리 이진탐색 문제인데 이진탐색으로 어떻게 풀지 감이 안 잡혀서 걍 bfs로 품 le...
문제 [모의고사] 풀이 세 학생의 답지 순서를 정적으로 생성한다. 반복될 것이니까 나머지 연산으로 처리하면 된다 answers와 대조할 함수를 만들고 각각 함수를 통해서 몇 개를 맞았는지 추출한다 세 학생의 답안지를 순회하면서 몇 개 맞았는지 체크하고, max인 답안만 배열에 넣는다. 코드 정리
문제 [최소직사각형] 풀이 코드 정리
문제 중위순회 풀이 중위순회를 구현해야 한다 중위순회는 left -> root -> right 순으로 순회한다. 코드 정리
문제 [[Increasing Order Search Tree ]](https://leetcode.com/problems/increasing-order-search-tree/) 풀이 이진 탐색 트리를 편향 이진 탐색 트리로 바꾸는 것 중위 순회로 val을 queue에 저장 queue를 순회하면서 right에 node를 재생성 코드 정리 중위 순회를 먼...
문제 [과일장수] 풀이 그리디 문제인데 이상하게 풀어버림... 코드 정리 뭔가 이런 문제만 보면 객체 지향을 도전하고 싶어서 최대한 객체 지향스럽게 풀어보았다... 이게 맞는 건지는 모르겠음 score를 계산하는 클래스랑 score group을 나누는 클래스를 만들어 역할분리를 했음
문제 [체육복] 풀이 양 옆에 있는 학생에게만 체육복을 빌려줄 수 있음 자신이 여분이 있었는데 잃어버렸을 경우도 고려해야함 코드 정리 반례를 생각 못 해서 오래 걸림 reserve를 내림차순으로 해야하는데 이거를 생각 못 해서...
문제 파스칼 삼각형 풀이 numRows만큼 순회하면서 이전 배열의 j-1 + j값을 가져와서 새로운 배열을 만듦 코드 - 순회 코드 - DP 정리 DP 문제인데 DP로는 도저히 못 풀겠어서 for문 사용 수학 베이스 문제들은 푸는데 시간이 오래 걸리는 거 같다 DP는 아직 아닌 거 같다...
문제 파스칼 삼각형2 풀이 재귀로 순회하면서 row를 채운다. 코드 - 순회 코드 정리 getRow를 재귀로 돌면서 rowIndex = 0이 될 때까지 콜스택에 쌓았다가 for문 순회를 하면서 배열을 채워간다.
문제 Array Partition 풀이 코드 정리
문제 Find Center of Star Graph 풀이 중심에 있는 노드를 찾는 것 중심 노드는 모든 노드들과 간선이 존재한다. 연결리스트를 만들어서 for문 순회하면서 모든 노드들과 간선이 존재하는 즉, edges.length와 동일한 노드를 찾는다. 코드 정리
문제 [가장 먼 노드] 풀이 주어진 배열을 인접리스트로 구성한다 queue에서 노드를 꺼내고 w와 max값을 비교해서 업데이트 bfs로 노드를 순회하면서 w를 증가시킴 중복 방문을 피하기 위해 visited로 검사 각 노드마다 1에서부터 떨어진 거리를 저장한 weightArr를 순회하면서 max값이 몇 개인지 센다 코드 정리 인접 리스트를 구성할 때...
문제 풀이 인접리스트 후 source부터 destination까지 도달하는지 체크하는 문제 bfs로 탐색하면 된다. 코드 정리 path를 생성해서 모든 경로를 저장하려고 했는데 어차피 시작을 source로 지정해서 node에서 destination를 꺼내는지만 확인하면 되었다
문제 [바탕화면 정리 ](https://school.programmers.co.kr/learn/courses/30/lessons/161990?language=java) 풀이 중첩 순회를 하면서 "#"를 찾으면 시작점과 끝점을 업데이트한다. 코드 정리
문제 공원 산책 풀이 주어진 배열에 따라 좌표를 이동시키는 것. 제한 조건으로는 'X'를 만나면 해당 move는 상쇄된다. 동서남북에 따라 x, y의 움직임을 지정한다 시작점이 항상 [0,0]이 아니므로 시작점을 먼저 구한다 routes를 순회하면서 현재 좌표를 업데이트 한다. 코드 - 절차 지향 코드 - 객체 지향 (나름) 정리
Missing Number 풀이 prioty와 index를 queue에 저장 queue를 순회하면서 현재 prioty보다 더 큰 우선수위가 있는지 찾는다 (위 과정은 최대 힙으로 했으면 간단했을 듯) 더 큰 우선순위가 있다면 현재 queue에서 꺼낸 값을 queue에 다시 넣는다 현재 queue에서 꺼낸 값이 가장 큰 우선순위라면 answer++하고 꺼내...
Missing Number 풀이 연속된 숫자 중 없는 수를 찾으면 된다 n이 10의 4제곱까지 있으므로 이진탐색으로 수행 아이디어는 코드 정리
Arranging Coins 풀이 n에서 차감하면서 만들 수 최대 row를 만든다. 이진탐색의 경우, mid 값을 뽑아 mid까지 모든 수를 더해 n과 비교한다. n보다 작을 경우, 해당 row는 모두 채울 수 있으므로 low를 올린다. 모두 더한 값이 n일 경우 mid까지 채울 수 있으니 mid를 반환, 코드 - 순회 코드 - 이진탐색 정리 이진탐...
풀이 백준 뭐지.. 백준 처음 해보는데 플랫폼 자체가 너무 어렵다.. 문제 이해하는 것도 오래 걸림.. input을 어떻게 넣어야 하는지 몰라서 지피티 참고함 코드 정리
풀이 이차원 배열 순회하면서 > 0 인 x, y를 기점으로 8면을 dfs로 탐색함 visited로 방문하지 않은 곳만 탐색 코드 정리 백준에서 메모리 초과 나오는데 왜 그러지는 모르겠다 백준이랑은 안 맞는 듯
풀이 말단 노드 간 거리가 distance보다 짧은 말단 노드 개수를 구해야 한다 일단 말단 노드를 모두 찾아 리스트에 저장 그래프를 구축한다 말단 노드를 순회하면서 모든 그래프의 노드들과 거리를 계산하다 코드 회고 bfs 순회 시 level를 부여해서 level이 가장 큰 (마지막 level은 말단 노드) 노드를 찾아서 각 말단 노드의 거리를 구하는...
문제 양 한마리... 양 두마리... 풀이 dfs 순회하며 '#'을 카운팅 코드 정리
문제 영역 구하기 풀이 영역 개수 만큼 순회하며 주어진 좌표들을 기준으로 board에 1을 채움 board를 순회하면서 dfs로 영역의 개수를 카운팅 코드 정리 왜 모눈종이를 뒤집었지..? 찾느라 한참 걸림.. 뭔가 문제 해석이 더 어려움.. 수능 문제 같음
문제 적어도 대부분의 배수 풀이 주어진 5개의 자연수 중 적어도 3개로 나누어 떨어지는 가장 작은 수를 구해야함 즉, 3개 조합의 최소공배수의 최소값 for문 3번 중첩해서 순회하면서 모든 경우 구하고 각각 최소공배수도 구해줌 코드 정리 최소공배수, 최대공약수 구하는 거 까먹어서 인터넷 봄...
문제 적어도 대부분의 배수 풀이 하라는대로 하면 된다! 코드 정리 이런 문제는 처음..
문제 Longest Palindrome 풀이 가장 긴 회문을 찾으면 된다 문자열을 정렬하고 hashSet으로 같은 짝을 찾음. 홀수의 경우 +1 코드 정리 순회하면서 회문이 가능한 문자열 중 가장 긴 문자열인 줄 알고 투포인터로 했다가 문제 다시 읽고 정렬 가능하다는 걸 알게됨
문제 Min Cost Climbing Stairs 풀이 시작점을 0 또는 1에서 고를 수 있다 step은 한 번 또는 두 번 갈 수 있다. 이 중 최소 비용으로 배열에 끝에 도달해야 한다. 배열을 순회할 때마다 최소 비용을 골라서 dp 배열에 저장한다. 인덱스 0 또는 1을 선택할 수 있으니 기본값으로 dp에 저장하고 계속 비교를 한다. 코드 정리 ...
문제 N-th Tribonacci Number 업로드중.. 풀이 피보나치인데 3개의 수에 대한 피보나치 재귀 과정에서 중복이 발생하므로 memo를 해줘야 한다 코드 정리 피보나치는 괜춘괜춘
문제 Best Time to Buy and Sell Stock 풀이 최소값과 최대값 차이가 가장 컸을 때를 구하면 된다 최대 10의 5승까지라서 O(n)으로 풀어야 한다 순회를 하면서 min과 max를 동시에 구하기 코드 정리