일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Flutter
- next.js
- useEffect
- 이메일 인증
- storybook
- 프로그래머스
- 사탕게임
- context api
- 피보나치 함수
- custom hook
- React.memo
- 백준
- 리팩토링
- React-hook-form
- Vanilla JavaScript
- Github Actions
- interaction test
- useMemo
- kakao blind recruitment
- TextFormField
- ZOD
- Props Drilling
- typescript
- suffixicon
- next-auth
- Python
- react
- visual test
- locale data
- javascript
- Today
- Total
목록Algorithms (13)
Dev Diary

백준 15903 카드 합체 놀이 문제 바로가기 카드 합체 놀이는 가지고 있는 카드 모음(자연수로 이루어진 배열)중에서 2장의 카드 1) x, y를 뽑고 2) 뽑은 2장의 카드를 각각 x+y값으로 변환시키는 과정을 문제에 주어진 합체 가능 횟수만큼 반복하는 게임이다. 이 게임을 진행하며 만들 수 있는 가장 작은 점수를 계산하는 프로그램을 구현하는 것이 목적이다.주어진 예제를 가지고 문제 이해하기문제에서 주어진 예제 중 맨 처음 카드 상태가 4 2 3 1인 예제 가지고 문제에서 해결법을 찾아보자. 해당 예제는 카드 합체를 2번 수행한다. 먼저, 해당 숫자 배열에서 뽑을 수 있는 2개의 숫자 종류는 아래와 같다. (4,2), (4,3), (4,1), (2,3), (2,1), (3,1) 각 케이스의 숫자들이 뽑..
백준 11501 주식 문제 바로가기 간단히 말해, 날짜별 주식 가격이 주어져있을때 최대 이익을 구하는 문제이다. 단, 할 수 있는 행동은 아래와 같다.주식 하나를 산다.원하는 만큼 가지고 있는 주식을 판다.아무것도 안한다.처음 풀이- 오늘 주식 가격과 내일 주식 가격을 비교했을때 내일이 더 높다면 오늘자 주식을 산다.- 오늘 주식 가격과 내일 주식 가격을 비교했을때 내일이 더 낮다면 이전에 산 주식이 있을경우 판다.import sys input=sys.stdin.readline T = int(input()) for \_ in range(T): N = int(input()) stocks = list(map(int, input().split())) count = 0 ..
문제 풀이function solution(today, terms, privacies) { var answer = []; // 오늘 날짜를 년,월,일로 나눠서 저장 const todayYear=+today.slice(0,4); const todayMonth=+today.slice(5,7); const todayDay=+today.slice(8,10); // 약관 종류와 유효기간 저장 const termsMap={} for (const term of terms){ key=term.split(" ")[0]; value=term.split(" ")[1]; termsMap[key]=+value } // 유효기간 더한 날짜를..
문제 이해1등 -> 6개 일치2등 -> 5개 일치3등 -> 4개 일치4등 -> 3개 일치5등 -> 2개 일치6등 -> 그 외 위에 주어진 등수와 등수를 결정하는 조건을 바탕으로 미리 ranks라는 배열에 저장해두고 시작한다.ex) ranks[맞은 번호의 개수] = 등수 민우가 적은 숫자 중에서 win_nums에 있는 숫자는 확정된 숫자이므로 decidedRank 변수에 +1을 해주고 값이 0인 부분에는 아무 숫자나 넣을 수 있으므로 최고 순위인 경우에는 0인 부분이 모두 win_num에 있는 숫자와 일치할 것이고 최저 순위인 경우에는 전부 일치하지 않는 경우이므로 결과적으로최고 순위: ranks[decidedRank+zeroCount]최저 순위: ranks[decidedRank]를 출력한다. 문제 풀이f..
백준 9375 패션왕 신해빈문제 이해하기옷의 종류(상의, 하의, 신발 등)와 각 종류에 대한 옷(맨투맨, 후드, 청바지, 운동화 등)이 각각 주어진다.주어진 옷들을 가지고 최소한 1가지는 입고 있을 수 있도록함(알몸은 안됨)과 동시에 같은 종류의 옷이 아닌(ex. 맨투맨과 후드는 둘 다 "상의"에 해당하기 때문에 같이 입을 수 없음) 경우의 수를 모두 센다. 옷의 종류 수를 n이라고 했을때, 위의 조건을 가지고 아래와 같은 식을 도출할 수 있다.((옷 종류1에 있는 옷의 개수 + 1) * (옷 종류2에 있는 옷의 개수 + 1) * ... * (옷 종류n에 있는 옷의 개수 + 1)) - 1 여기서 각 옷 종류에 있는 옷의 개수에 + 1을 해주는 이유는 해당 종류의 옷을 입지 않는 경우도 있기 때문이다. 예..
백준 1003 피보나치 함수문제 이해하기자연수 N이 주어질때 fibonacci(N)을 수행한 결과값에 들어있는 0과 1의 개수를 구하는 문제이다.문제에 주어진 N번째 피보나치 수를 구하는 C++ 함수는 아래와 같다. (이하 fibonacci()는 f()로 축약하겠다.)int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); }} 위 코드를 바탕으로 f(0), f(2), f(3)...의 결과를 도출해보면 아래와..
백준 20365 블로그2문제 이해하기이전 인덱스 값이랑 현재 인덱스 값을 비교해 같다면 한개로 묶어 중복 값을 없애준다. -> arr 배열ex) BBRBRBBR -> BRBRBR문자열의 맨 처음 색상을 기준으로 해당 색상이 가장 마지막으로 나오는 인덱스(end 변수)까지를 한 묶음으로 생각한다.ex) 1.을 수행하고 나온 결과가 BRBRBR인 경우 BRBRB까지를 한 묶음으로 생각한다.2.의 결과로 나온 한 묶음 안에서 for 문을 돌며 맨 처음 인덱스 값(standardColor)과 다른 값인 경우 answer += 1을 수행한다.왜? 한 색상으로 다 칠한 뒤 다른 색상인 부분만 골라 칠하면 가장 효율적이기 때문에.3.의 결과로 나온 answer 값을 1.에서 구한 전체 길이(workLength) - ..
백준 10026 적록색약문제 이해하기각 그림에는 R,G,B의 3가지 색상이 존재한다.정상인 사람은 R,G,B의 구별이 가능하지만, 적록색약인 사람은 R과 G가 붙어있는 경우 같은 색으로 본다. (떨어져 있는 경우에는 구별 가능)bfs를 이용해 풀 것이다.정상인 경우 일반적인 bfs 로직을 이용하며 현재 위치의 색상과 주위(4방향)을 탐색하며 같은 색상인 경우에만 visited를 True로 바꿔주고 이동할 수 있도록 하며, 한번의 bfs 연산이 끝났을때 count를 증가시켜 구역의 개수를 세어준다.적록색약인 경우 일반적인 bfs 로직과 똑같이 진행하지만, R과 G가 붙어있는지 검사하는 조건을 추가해 붙어있다면 이 경우에도 visited를 True로 바꿔주고 이동할 수 있도록한다. 풀이import sysin..