본문 바로가기

컴퓨터58

[Git] 파일명 대소문자 구분이 안되는 경우 후.. 생각지도 못한곳에서 에러가 생겨서 기록하고자 합니다. ​ 발생 배경 토이프로젝트를 하던 중, page/xxx.ts로 있던 파일들을 컴포넌트로 옮기는 작업을 하던 중이었습니다. 지에 있던것들을 `component` 폴더로 옮겼습니다. 그 이후 그냥 아무 생각없이 pr을 올리고 merge를 했습니다. 며칠 후에 component 폴더에 있는 컴포넌트명이 소문자인것을 보고 대문자로 변경을 했습니다. 그 이후... 배포를 했는데 뭔가 이상합니다 잘 돌아가던 페이지가 고장났다고 합니다.. 아무리봐도 내 로컬에서는 잘 돌아가는데 이해를 할 수 없었습니다. ​ 원인 하.. 깃이 대소문자 구분을 못하네 배포를 담당하는 브랜치를 가보니 파일명이 'history', 'bookmark' 이렇게 소문자로 되어있습니다... 2022. 10. 1.
[BOJ] N과 M(1), next_permutation풀이 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹으로 푸는걸 떠나서, next_permutation으로 어떻게 풀어야 할지 감이 잘 오지 않았다. 코드를 짧게해서 조합을 구할때처럼 뭔가 깔끔한 N! 풀이가 없나? 싶었다. 조합은 {0,0,0,1,1}로 두고 5C3을 한번에 출력할 수 있지만, 순열은 그렇지 않다. ​ 특히 next_permutation은 5명중에 순서고려 X해서 5명 다 세우는건 쉽게 할 수 있다. 하지만, 4P2 이런.. 2021. 11. 8.
[BOJ] 2448. 별찍기-11 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 여기까지 푸니 이제서야 재귀가 뭔지 와닿는다. 뭔가 말로 표현은 할 수없는데.. 어떻게 되는지 조금 생각할 수 있게됨 ​ 규칙 : 1. 이게 N = 12일때 인데, 뭔가 재귀함수 내에서 3개로 나눠서 호출하면 될 것 같다는 생각을 함 2. 파란 네모 단위로 배열에 담으면 되겠다는 생각 3. 시작점만 잘 주면 풀리겠다는 생각 4. 시작점을 어떻게 찾을까? N = 12일때(빨간색 네모로 들어가보자) div = N/2; recur(div, x, y+div.. 2021. 11. 4.
[BOJ] 1699. 제곱수의 합 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 풀이방법 : DP + 약간의 생각 ​ 1트 : 실패 Why? TLE 1. DP[n] = k, n을 만드는데 필요한 최소 숫자의 개수 라고 table 정의 ​ DP[1] = 1 DP[2] =2 // 1 + 1 DP[3] = 3 // 1 + 1 + 1 DP[4] = 1 // 2^2 ​ 이런식으로 해서 DP[10]을 구할땐, DP[1]+DP[9], DP[2]+DP.. 2021. 10. 28.
[알고리즘] Prim`s algorithm. MST 구하는 2번째 방법. 프림 반갑습니다. 이번엔 O(ElogV) 시간복잡도를 가지는 Prim알고리즘에 대해서 알아보겠습니다. ​ 이건 음.. heap을 알아야 하는데, 힙구조를 가지는 priority_queue를 사용할 수 있으면 좋습니다. 없으면 kruskal이 구현하기 더 낫습니다. ​ ​ Kruskal VS Prim 결과부터 말하면 Edge가 많으면 Prim, Edge가 적으면 Kruskal이 좀 더 좋습니다. (이론상) ​ Kruskal은 sort과정에 O(ElogE)이 피할 수 없기에 E에 영향을 받고, Prim은 O(ElogV)입니다. 이미 방문된 지점은 다시 방문되지 않기에 pq의 push나 pop과정이 없어서 그렇습니다. 근데 MST를 찾는다는건 기본적으로 V < E니까 쓰겠죠...? 근데 그냥 편한대로 합시다. ​ .. 2021. 10. 2.
[Programmers] 2021 kakao blind - 합승 택시 요금 https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 풀이 방법 : 플로이드, 다익스트라 ​ 나의 사고 과정 1. undirected, .. 2021. 10. 1.
[자료구조] MST를 구할 때 사용하는 크루스칼 알고리즘(Kruskal) 설명에 앞서, Union - Find 연산에 대해서 학습을 해야하는데, 이 부분은 제가 봤던 유튜브로 대체하겠습니다. https://www.youtube.com/watch?v=eTaWFhPXPz4 이것과 Optimized Union/FInd를 보시고 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 이 문제를 풀어서 제대로 이해했나 확인해보시면 됩니다. ​ Kruskal 알고리즘을 왜 쓰는가? - MST를.. 2021. 9. 30.
[BOJ] 같은수로 만들기 2374, 13146 (분할정복, 스택) https://www.acmicpc.net/problem/2374 2374번: 같은 수로 만들기 n(1 ≤ n ≤ 1,000)개의 자연수 A[1], A[2], A[3], …, A[n]이 있다. 이 자연수에 Add(i)라는 연산을 하면, A[i]가 1만큼 증가한다. 이때, A[i]만 증가하는 것이 아니고, A[i]의 좌우로 인접한 같은 수의 그룹이 한 www.acmicpc.net 풀이 방법 : 분할정복 (재귀), 스택 ​ 분할정복을 이용한 방법은 O(N^2)까지 나올 수 있어서, 13146에서 시간초과가 납니다. 하지만 stack을 이용한 풀이로 하면 O(N)으로 해결할 수 있습니다. ​ 1. stack을 이용한 풀이 https://www.acmicpc.net/problem/13146 13146번: 같은 .. 2021. 9. 29.
[BOJ] 12738, 14003 LIS(가장 긴 증가하는 수열, 이분탐색) - 2 https://www.acmicpc.net/problem/12738 12738번: 가장 긴 증가하는 부분 수열 3 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net n이 100만이므로 O(nlogn)의 풀이를 택해야 합니다. 이번엔 이분탐색을 이용해서 풀어보도록 하겠습니다. 참고로 이분탐색은 빠르게 개수는 찾을 수 있지만, LIS가 항상 올바른 순서로 있다고 장담할 순 없습니다. lower_bound함수를 이용하면 t보다 같거나, 큰 가장 최소의 인덱스를 반환해줍니다. 예를들면 arr[3] = {1,5,6} 일때 lower_bo.. 2021. 9. 25.
[BOJ] 11053, 11722, 14002 LIS(가장 긴 증가하는 수열, 가장 긴 감소하는 수열) - 1 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 저는 바로 못풀었습니다. DP로 어떻게 풀지? 이렇게 생각했어요. 위키피디아에서 LIS를 검색해서 시뮬레이션을 보고 이분탐색으로 했습니다. 전 아이언5티어입니다.. ​ 풀이 방법 : 2가지가 있습니다. LIS 시리즈가 1~5까지 있는만큼, 더 좋은방법이 존재합니다. 이번 포스팅에서는 DP를 이용한 풀이, 다음 포스팅에서.. 2021. 9. 25.
728x90