분류 전체보기

· 알고리즘
이 문제는 문제에서 어피 치과 과녁을 쏜 이후에 라이언이 과녁을 쏘는데 문제에 규칙에 따라서 라이언이 최대 점수차로 이기게 과녁을 쏠려면 어떻게 점수를 얻어야 할지 구하는 문제이다. 이 문제를 보면서 어떻게 구현할지 고민을 했는데 나에게 힌트가 됐던 점은 점수가 1에서 10까지 있다는 것과 오직 점수 얻는 방식이 상대편(어피치) 보다 많이 그 점수를 맞췄을 때 딱 그 점수만 얻는다는 점이다. 예를 들면 어피치가 10점 3발, 라이언이 10점 4발을 맞춘다면 점수는 라이언만 10점을 얻게된다는 점이다. 즉, 10개의 점수판 중에서 1점을 획득한다/ 못한다, 2점을 획득한다 / 못한다 이런 식으로 경우의 수가 2의 10 제곱으로 완전 탐색을 할 수 있다는 점이 나에게 힌트였다. 나는 위의 아이디어를 바탕으로..
· 알고리즘
이 문제는 한 마을에서 다른 마을로 이동할 때 비용(시간)이 주어질 때 다른 마을까지의 비용이 주어진 K보다 작은 마을의 개수를 구하는 문제이다. 가장 먼저 다익스트라가 떠올랐고 실제로 다익스트라 알고리즘을 통해 문제를 풀었다. 한가지 특이점은 보통 다익스트라는 목적지까지의 최소비용을 구할 때 많이 사용해온 알고리즘이지만 이 문제는 특별한 목적지가 존재하지 않다. 그렇기 때문에 나는 이 문제에서 heap 자료구조를 사용하지 않았다. 최소비용으로 갈 수 있는 경우에만 enqueue를 하면서 그래프 탐색을 하다가 더 이상 최소비용으로 갈 수 있는 도시가 없을 때 종료하도록 코드를 만들었다. (지금 생각해보니 heap을 사용하여 현재까지 비용이 K가 넘어가면 중지하는 식으로 구현해도 될 것 같다.) 정리하자면..
· 알고리즘
이 문제를 요약하자면 출발점에서 목적지까지 최단거리를 제외한 그다음 최단거리를 이용한다면 소요되는 비용을 묻는 문제이다. 이 문제를 풀기위한 나의 아이디어는 다익스트라로 우선 최단거리를 구한 후 그 결과를 활용하여 최단거리를 추적하고, 그 최단거리를 삭제한 후에 다시 다익스트라를 이용하여 최단거리를 구하는 것이다. 이를 정리하자면 아래와 같다. 1. 다익스트라를 통해 최단거리를 갈 때 비용을 기록 2. BFS를 활용해서 최단 루트 추적 -> 다익스트라를 기록한 배열을 활용하여 추적함 3. 다익스트라를 다시 하여 최소 비용 구하기 문제를 풀면서 생각한 엣지케이스는 최단거리가 여러 개일 수도 있다는 점이었기 때문에 최단거리를 추적할 때 이를 고려하여 최단 루트를 추적하였다. 이를 코드로 나타내면 아래와같다...
· 알고리즘
이 문제를 보면서 어떻게 풀어야 할지 고민하다가 알고리즘 분류를 보고 더 많이 헷갈렸다. 원래 문제를 풀 때 알고리즘 분류를 잘 보지 않으려고 하는데 이문제는 접근 자체가 너무 고민되어 보고 말았다.... 알고리즘 분류에 플로이드-와샬이 적혀있었는데 나는 기본적으로 플로이드-와샬 알고리즘도 다익스트라처럼 가중치가 있는 그래프의 최단경로가 있을 때 사용할 거라 생각했었는데 이 문제는 가중치가 없어서 어떻게 플로이드 와샬로 풀지 와닿지 않았다. 그래도 일단 플로이드-와샬 알고리즘의 기본 틀은 알고 있었기 때문에 그 틀에 맞추어 풀어보았다. 나의 아이디어는 아래와같다. 1. 2차원 배열에는 현재 행을 기준으로 열이 행보다 작으면 True (1)을 준다. 2. 플로이드-와샬알고리즘을 활용하여 비교대상 값(s)이..
· 개발
React App을 설치 한 후 실행을 하자마자 예외가 발생하였다. React 실행을 잘 됐지만 뭔가 찝찝한 이 에러를 확인 해보기 위해서 온 구글을 뒤져보았다. 대표적인 해결책들로는 아래와 같이 있었다. Node.js 버전 불일치 -> 재설치 npm swr 설치 node_modules 삭제 후 재설치 모두 해봤는데 안돼서 포기할려던 찰나 코딩애플이라는 강의사이트의 나와 똑같은 사람의 문의를 통해 해결할 수 있었다. 나의 문제는 파일 경로의 #이 있었던 것이였다. 다른 폴더에 설치하니 놀랍게도 실행 될 수 있었다. 왜 #이 붙어서 오류가 나는지는 모르겠지만 그냥 작업폴더에는 특수문자를 안써야겠다고 절실히 느꼈다.
· CS
promise를 통한 동기 호출을 공부하다가 array.reduce의 몰랐던 활용법을 알게 되어 정리해보았다. 일단 reduce의 기본 형태는 아래와 같다. arr.reduce(callback[,initialValue]) Callback acc : 콜백의 반환값을 누적할 공간 val : 처리할 현재 값 index : 현재의 인덱스 (선택) array : reduce()를 호출할 배열(선택) InitiailValue (선택) callback의 최초 호출에서 첫 번째 인수에 제공하는 값. 지정하지 않는다면 배열의 첫 번째 요소가 저장됨 설명만 봤을때는 처음 떠오르는 생각은 누적합이었고, 실제로 reduce예제를 찾아보면 누적합이 가장 많이 보인다. 나 역시 reduce를 배울 때 누적합 할 때 가장 많이 사..
· 알고리즘
문제에서 요구하는 대로 코드를 짜면 되는 구현문제이다. 이 문제는 요구사항도 일곱단계로 정리해서 주었고, 효율성을 크게 요구하는 문제도 아니기 때문에 문제가 원하는대로 구현하면 쉽게 풀수 있는 문제이다. 약간 까다로운 조건이라하면, 연속으로 마침표를 사용할 경우에는 마침표가 제거된다는 점이 있었는데 백준 문자열폭발 문제에 비하면 까다로운 조건도 아니였다. 문자열 폭발처럼 스택으로 해결하지 않고 플래그로 해결했어도 됐지만, 나는 스택을 이용하여 풀었다. 문제조건은 아래와같다. stack 자료구조를 이용하여 쉽게 풀 수 있었다.
· 알고리즘
이분탐색 문제이다. 이번문제는 이분탐색인걸 모르는채로 풀었는데 문제를 읽자마자 이거 이분탐색이잖아? 라는 생각이 들었다. 내가 그래도 연습을 하긴했구나 싶어서 뿌듯했다. 항상 느끼는 거지만 이분탐색문제는 어떤 값을 찾을 것인가? 그 값이 내가 원하는 값인지 어떻게 검증할 것인가가 가장 중요하고 어려운것 같다. 이 문제에서는 몇 센티미터로 잘랐을 때 원하는 갯수만큼 가장 길게 줄 수 있냐고 묻는 문제이다. 즉, 몇 센티미터인가를 우리가 찾는 값으로 이 값을 기준으로 자르면 몇개를 만들 수 있냐를 통해 검색을 해나갈 수 있다. 이를 코드로 나타내면, 이렇게 된다. 이전에 풀었던 이분탐색문제들보다는 쉬웠던 문제인것 같다.
거념
'분류 전체보기' 카테고리의 글 목록 (6 Page)