안녕하세요! 학교에서 자바와 C, 파이썬을 배우기 시작하면서 알고리즘 공부도 반드시 해야할 것 같아 혼자 공부한 알고리즘도 같이 기록하려고 합니다! 알고리즘 중에서도 오늘은 재귀 알고리즘에 대해 정리하려 합니다. 재귀 ( Recursion ) 은 어떠한 것을 정의할 때 자기 자신을 참조하는 것을 말합니다. 그럼 재귀 알고리즘은 어떠한 함수, 메소드가 실행될 때, 또 다시 자기 자신을 불러 연산을 수행하는 것을 말 하겠죠? 재귀 호출이라고도 많이 부른다고 합니다. 재귀 알고리즘을 사용할때 주의 해야할 것이 반복문을 다룰때 처럼 종료 조건이 있어야 합니다. 종료 조건이 없으면 무한히 자기 자신 호출하게되어 무한 루프에 빠지게 됩니다. 재귀 알고리즘의 가장 유명한 예제들 두 가지를 보겠습니다. 1. 팩토리얼 ..
안녕하세요! 백준 2798번 블랙잭 문제입니다! 블랙잭 문제는 브루트 포스 알고리즘을 사용하는 문제입니다. 브루트 포스(brute force) 알고리즘은 완전 탐색 알고리즘이라고도 합니다. 모든 경우의 수를 확인하여 적합한 결과를 출력해내는 알고리즘입니다. 브루트 포스의 가장 기본적인 탐색 방법은 해가 존재하는 모든 경우를 전체 탐색하는 것입니다. 전체적으로 탐색하는 순차 탐색, 비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색(Depth First Search)과 너비 우선 탐색(breadth first search)이라는 도구들이 있습니다! 참고 : https://namu.wiki/w/%EB% B8% 8C% EB% A3% A8% ED% 8A% B8%20% ED% 8F% AC% EC% 8A% A4 블랙..
안녕하세요! 백준 1193번 분수 찾기 문제 파이썬 풀이입니다!! 나열된 분수들이 다음과 같은 순서로 진행되며, 순서대로 1번, 2번, 3번...이라 부릅니다. 출력하고자 하는 n번째 분수를 입력받고 그에 해당하는 분수를 출력하는 문제입니다! 제 코딩입니다! 먼저, 목표 숫자를 입력받고 그 목표 숫자가 몇 번째 대각선 상에 있는지 while 반복문을 사용하여 line 이름의 변수로 선언하였습니다. (line19 ~ 21) 그리고 a라는 변수에 대각선 내에서 몇 번째에 있는지 선언해주었습니다. (line 23) 홀수번째 대각선과 짝수번째 대각선의 방향이 다르기 때문에 if 문으로 두 가지 경우에 해당하는 정답을 출력해주었습니다! (line 25 ~ 28) ----------------------------..
안녕하세요 백준 2291번 벌집 문제 파이썬 풀이입니다! 먼저 숫자를 입력받고, 중심에서부터 입력받은 숫자에 해당하는 방까지 지나가는 방의 개수를 출력하는 문제입니다! 이 처럼 둘러싸는 방의 개수가 6개씩 늘어나며 등차수열을 이루고 있습니다. 중심을 둘러싸고 있는 방들을 1 열이라 하고, 1열 방들을 둘러싸고 있는 방을 2 열이라고 하면 중심에서 목표방까지 가는 최소 방의 개수는 목표 방이 속해있는 열의 수가 그 최솟값이라 생각했습니다. 제 코딩입니다. 목표 방이 속해있는 열을 추적하면서 하나의 열을 지날때 마다 count += 1을 해주었습니다. 마지막에 목표 열에 도착했을때, count 값을 출력해주도록 했습니다. 쉽게 풀이할 수 있는데 괜히 설명이 정신없었던 것 같네요 ㅠㅜㅜㅜ 이상 벌집 문제 풀이..
안녕하세요 백준 1712번 손익분기점 문제 풀이입니다! 한 줄에 고정비용, 가변비용, 판매비용 순서로 입력을 받고, 순이익이 발생하는 순간의 판매량을 출력하는 문제입니다! 바로 제 코딩 보여드리겠습니다. 먼저, 고정비용, 가변비용, 판매비용을 입력받습니다. 만약, 가변비용(cost[1])이 판매비용(cost [2])보다 크다면 이익이 발생하지 않겠죠? 그래서 그 경우에 -1을 출력하도록 했습니다. (line 5, 6) 가변비용이 판매비용보다 클 경우, 판매비용에서 가변비용을 뺀 이익으로 고정비용을 나누어준 몫에다 +1을 하여 출력해주었습니다. +1을 한 이유는 나누기를 한 후에 나머지가 발생하는 경우이든, 딱 떨어지는 경우이든 이익이 발생하는 경우는 그 다음 제품을 판매했을 때 이익이 발생하기 때문에 +..
백준 1065번 한수 문제 파이썬 풀이입니다!! 입력받은 숫자의 각 자리의 수가 등차수열을 이루면 그것을 한수라고 부릅니다. 예를 들어, 한수에는 123, 135, 951이 있을 수 있겠네요. 여기서 1 ~ 99까지는 모두 한수라고 볼 수 있습니다. 주요하게 다룰 부분은 100 ~ n 까지가 아닐까 생각했습니다. 제 코딩입니다. 만약 입력받은 수(n)가 100보다 작으면 n개의 한수가 생기기 때문에, n을 그대로 출력해주었습니다. 그리고 100보다 크다면 각 자릿수의 숫자와 그 뒷자리 숫자의 차이를 새로운 리스트에 넣었고, 그 리스트의 중복을 제거했을 때 1이 된다는 것은 모든 차이가 동일하다는 것으로 한수에 해당합니다. 한수에 해당하는 숫자가 발생 할 때마다 count에 1을 더해주어 마지막에 모든 한..
백준 4673번 셀프 넘버 문제 파이썬 풀이입니다! d(n)이라는 함수가 정수 n과 정수 n의 각 자릿수를 더하는 함수라고 할 때, n을 d(n)의 생성자라고 합니다. 이 문제의 예제를 보면 33은 39의 생성자라고 할 수 있습니다. 이때 생성자가 없는 정수를 셀프 넘버라고 합니다. 그럼 셀프 넘버는 d(n)으로 만들 수 없는 정수라고 볼 수 있습니다. 제 파이썬 코딩입니다. 1부터 10000까지 정수 리스트를 선언한 다음, 1부터 d(n)에 대입하여 나오는 정수들을 정수 리스트에서 제거해 주었습니다! **함수를 만들어서 쓰는 문제였는데, 지금 와서 보니 저렇게 만들어라는 뜻은 아니셨던 것 같은데;; 이상, 백준 4673번 셀픈 넘버 문제였습니다! 코딩이나 설명에 이상한 부분, 수정할 부분 혹은 더 나은..
백준 2941번 크로아티아 알파벳 문제입니다! 단어를 입력받고, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력해야 하는 문제입니다! 1개 이상의 문자로 이루어져 있는 특이한 알파벳을 잘 처리하는 것이 관건인 것 같습니다. 제 코드입니다 line 1에서 특이한 알파벳 리스트를 선언한 후, line 5 ~9에서 for반복문을 사용하여 단어 안에 있는 특이한 문자를 먼저 카운팅 해주고, 일반적인 알파벳의 개수를 세었습니다!! 이상 크로아티아 알파벳 문제 풀이였습니다! 더 좋은 코딩이나 수정할 부분 댓글로 남겨주세요!
오늘은 백준 5622번 다이얼 문제 풀이입니다! 다이얼은 1번 다이얼은 2초, 그다음부터 1초씩 시간이 늘어납니다. 단어를 입력받고 알파벳에 해당하는 번호의 시간을 더해서 출력하는 문제입니다. 제 코딩입니다! line 1 ~ 15 : 딕셔너리 타입으로 각 알파벳에 해당하는 다이얼 넘버를 value 값으로 설정해주었습니다. line 17 : 단어를 입력받습니다. line 18 ~ 20 : 알파벳에 해당하는 다이얼 시간을 time 변수에 더해줍니다. 원래 처음 시도한 코딩은 이 코딩이 아니었는데, 첫 코딩이 실패로 결과가 나와서 저렇게 싹 수정했었습니다. 제 첫 코딩입니다. 지금은 잘 작동하네요 ㅎㅎ 위 코딩과는 다르게 리스트의 index를 가지고 시간을 출력해내는 코딩입니다. 이 코딩도 참고해보세요!! 봐..
백준 문제풀이 2908번 상수 문제입니다! 이 문제는 이해하는 방향에 따라 아주 아주 간단한 문제가 되거나 이해는 했지만 조금 산으로 갈 수도 있는 문제인 것 같아요. 제가 산으로 갔기 때문에... 첫 줄에 공백으로 구분된 두 수를 입력받고, 두 수를 거꾸로 뒤집은 뒤에 크기가 큰 수를 출력하는 문제입니다. 제가 처음 한 코딩입니다. 너무 쓸데없이 복잡해서 따로 설명은 안 하겠습니다. 숫자를 뒤집으려고 몫 남기고.... 나머지 남기고... 산으로 간 거 보이시죠... 이런 방법보다 간단하게 입력받은 문자를 뒤에서부터 슬라이싱 해서 간단하게 문제를 해결하는 방법입니다. 확실히 간단해 보이죠? x, y로 선언하지 않고 다음 코딩처럼 단순하게 입력문자 전체를 뒤에서부터 슬라이싱 후, max() 함수로 더 큰 ..
- Total
- Today
- Yesterday
- Vue.js
- Repository Pattern
- Vuex
- TypeScript
- error
- React.memo
- redux
- SOAP API
- bundler
- programmers
- SPA
- js
- 문제풀이
- Preloading
- redux-thunk
- 프로그래머스
- AxiosInterceptor
- Vue
- Transpiler
- 알고리즘
- webpack
- 백준
- React
- v-for
- clean code
- 파이썬
- python
- reactrouter
- 상호평가
- GraphQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |