이카's
반응형
article thumbnail
알고리즘 유형 별 정리
알고리즘 문제풀이 2023. 5. 24. 13:23

알고리즘 풀이 모음 알고리즘을 한번으로 공부하는 것은 어렵다. 마치 수학문제같다..! 한번으로 땡!이 아닌 여러번 풀어보고, 필요한 로직을 기억하고, 유형별로 풀어보는게 좋은 방법이라고 생각한다! 알고리즘을 유형별로 정리해보고, 필요한 로직을 기록하기 위한 포스팅을 시작한다! BOJ 유형별로 가장 많은 문제를 보유한 플렛폼 입출력 I/O가 조금 불편하긴 하지만, 문제 유형이 많아서 좋고, 다양한 것을 공부 할 수 있어서 메리트가 있다. Programmers 일단 문제가 길다. (== 이해하는데 어렵다. 특히 카카오 문제) 하지만 사고력을 키울 수 있는 문제가 많다. 또한 최근 문제가 많아져서 풀만한 것 같다. 또한, I/O에 대한 부분을 전혀 신경을 쓸 필요가 없다.

article thumbnail
알고리즘을 잘 풀기 위한 팁 - 구현편(feat. 유튜버 큰돌님)
알고리즘 문제풀이 2023. 5. 23. 21:31

알고리즘 어떻게 풀까? 구현 디버깅 (굳이 메모장 필요 X) 문제 도식화 쉬움2 보통1 꾸준히 타자속도 자주 나오는 로직은 외우자 실력이 조금 있다? ▶️▶️▶️ BOJ 실버 2문제, 골드 1문제 그렇지 않다? ▶️▶️▶️ BOJ 브론즈 2문제, 실버 1문제 찾는 방법 solved.ac 들어가서 검색 ▶️▶️▶️ ex) #implementation *s (구현 실버 문제) 예시 백준 14502 - 연구소 벽 3개 새운다. 1-1. 모든 경우의 수 체크 - 완전 탐색 바이러스 퍼트린다 안전 영역 count하는 것 필요 DFS 구현 처음부터 IDE에서 풀되, 자동완성 쓰지 말고, 직접 치는 연습을 해야한다. 구현문제의 많은 경우는 x1, y1, x2, y2로 네방향으로 벽을 치면서 구현하는 문제가 많다. 꼭..

[Node.js] 백준 #10828 스택 (실패 : 시간초과)
알고리즘 문제풀이/BOJ 2021. 7. 20. 23:51

let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); let stackCount = Number(input[0]); function solution() { let stack = []; let result = 0; function PUSH (num) { return stack.concat(num); }; function TOP() { if (stack.length === 0) { return -1; } else { result = stack.slice(-1, ); } return result; }; function SIZE () { return stack.length; }; function EMPTY..

[Algorithm]프로그래머스 체육복 #python #그리디
알고리즘 문제풀이 2021. 5. 17. 22:53

처음 문제 풀때는 어떻게 풀어야 할지 막막했다. 어떻게 순서를 정하고 풀어야 하는데 어디서 부터 손 댈지가 막막했다. 그래도 순서 적어가면서 풀어봤는데, 나름 풀만 했다! 또한 새로운 걸 배워서 적어 본다. lost, reserve = list(set(lost) - set(reserve)), list(set(reserve) - set(lost)) 차집합 개념이라고 생각하면 된다. a - b라고 생각 했을때, a에서 b를 빼고 나머지 a가 담긴다. 즉 앞 set() 기준이라는 소리! 이 개념만 알면 코드 몇줄은 쉽게 줄여진다! 또한, list.remove(변수) 를 쓰니까 쉬웠다... list에 담겨져 있는 것 하나를 어떻게 지울까 하다가 remove를 쓰면 된다는 말에한번 써봤는데, 정말 쉽게 풀었다....

[Algorithm] 자릿수의 합 #python
알고리즘 문제풀이 2021. 5. 11. 22:09

문제 N개의 자연수가 입력되면 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수 출력 자릿수의 합 구하는 함수 만들기 코드 구현 생각 처음에는 잘 이해 안됐지만 쉽게 생각하니 쉬웠다. 111111 이 주어진다면 1을 6번 더하면 된다는 말 즉 return 값은 6 999 라면 각각 자리의 숫자를 합하는 것 PYTHON # 문자열 방법 def solution(x): total = [] sum = 0 for i in x: for j in str(i): sum += int(j) total.append(sum) sum = 0 max_num = 0 for i in total: if i > max_num: max_num = i answer = x[total.index(i)] return answer 이 방법이..

article thumbnail
자료구조 정리 #1 배열(Array), 리스트(LinkedList), 큐(Queue), 스택(Stack)
SW/자료구조 2020. 11. 12. 02:11

- 자료구조의 분류 선형구조 1. 배열 (Array) (선형 리스트) 배열의 특징은 논리적 순서와 물리적 순서가 일치한다. 즉, index값을 통해 원소 접근이 용이하며, 구현이 쉽다. 하지만 단점으로 삽입, 삭제 등에 대한 연산에 필요한 Cost가 높다. 삭제를 하는 경우 순서를 맞추기 위해 뒤의 원소들을 앞으로 Shift 연산을 해줘야 한다. 삭제 1 2 3 4 5 1 2 삭제 4 5 1 2 4 5 1 2 4 5 2. 연결 리스트(LinkedList) 배열의 삽입/삭제의 단점을 극복하고자 만든 개념이 리스트이다. 배열은 논리적, 물리적 저장이 순서대로 되어 있다. 하지만 리스트는 논리적으로는 순서대로 되어 있으나 물리적으로는 순서대로 되어있지 않다. 대신 각 원소가 index위치에 ..

[알고리즘/삽입정렬] #Insertion_Sort / in Python
SW/자료구조 2020. 10. 7. 14:54

삽입 정렬 - 숫자를 오름차순으로 정렬하는 프로그램 arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 삽입정렬은 앞의 있는 원소들이 이미 정렬되어있다고 가정을 한다 라는 특성이 있다. 즉, 하나의 원소를 선택 후 삽일 할 위치에 보내는 방법을 삽입 정렬이라고 한다. #1 [1, 3, 4, 5, 2] #1 선택해 맨 처음 자리로 이동 [(1) _, 3, 4, 5, (1), 2] 빈 공간이 있다고 생각하고 이동 #2 [1, 2, 3, 4, 5] #2 선택해 공간의 위치에 이동 1과 3 사이 [_, 1, (2)_, 3, _, 4, 5, (2)] #3 [1, 2, 3, 4, 5] #3 선택해 자리 이동 //변화 없음... #4 [1, 2, 3, 4, 5] #4 ..

[알고리즘/버블정렬] #Bubble_Sort / in Python
SW/자료구조 2020. 10. 7. 14:28

버블 정렬 숫자를 오름차순으로 정렬하는 프로그램 하지만 쉽게 해석하려면 가장 큰 숫자를 맨 뒤로 보내는 것과 같다고 생각하면 된다. arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 두 수를 선택해서 큰값을 뒤로 보내는 방법을 버블 정렬이라고 한다. #1 [3, 4, 5, 1, 2] #3과 4을 자리 바꾸기 // 변하지 않음 #2 [3, 4, 5, 1, 2] #4와 5 자리 바꾸기 // 변하지 않음 #3 [3, 4, 1, 5, 2] #1과 5 자리 바꾸기 #4 [3, 4, 1, 2, 5] #2와 5 자리 바꾸기 순서로 진행된다. 결국 5가 가장 마지막이고 1은 가장 처음으로 온다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ''' 반..

[알고리즘/선택정렬] #Selection Sort / in Python
SW/자료구조 2020. 10. 7. 13:10

선택 정렬 숫자를 오름차순으로 정렬하는 프로그램 arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 가장 작은 숫자를 선택해서 앞으로 보내는 방법을 가장 먼저 떠올릴 수 있다. #1 [1, 4, 5, 3, 2] #1과 3을 자리 바꾸기 #2 [1, 2, 5, 3, 4] #2와 4 자리 바꾸기 #3 [1, 2, 3, 5, 4] #3과 5 자리 바꾸기 #4 [1, 2, 3, 4, 5] #4와 5 자리 바꾸기 순서로 진행된다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ''' #반복문 사용 i, j >>> 배열에 있는 원소 반복적으로 탐색 min_index >>> 최솟값 원소 "위치" ''' def selection_sort..

article thumbnail
Baekjoon #2292번 벌집 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 19:58

www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌�� www.acmicpc.net 문재해석 처음 보는순간 수열이라는 것을 쉽게 발견 할 수 있다. 솔직히 백준 수학 알고리즘 수학 1 파트를 풀고 있지만 규칙은 어렵지않게 발견했지만 구현이 쉽지가 않다. 이번에도 조금 힘들었다. 조건1) room은 초기방 숫자가+6씩 수열로 증가 할때마다 room +1 씩 해주면 된다. 코드를 풀어보자면 처음 숫자가 1번 일때는 그대로 출력 // #1번째 방 초기값을 7로 잡아서 구하고자하는 값이, 예를들어 6일때 ..

article thumbnail
Baekjoon #2839번 설탕배달 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 18:02

www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그�� www.acmicpc.net 문재해석 정말 애먹었다. 처음 해석은 쉬운데 이걸 구현하기가 생각보다 까다롭다. 다들 3의 배수 5의 배수로 생각을 하다가 생각해보면 의외로 그렇지 않는 경우도 있다. (예를들어 11의배수도 있고...) 아무튼 고민끝에 푸는 방법은 간단했다. 조건1) 5의 배수일때 무조건 5를 빼준다. 그리고 카운터 + 1 조건2) 5의 배수가 아닌거는 무조건 3을 빼준다. 그리고 카운터 + 1 이렇게 돌리면 11, 16과 같은 경우..

article thumbnail
baekjoon #1712번 손익분기점 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 15:57

www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 문재해석 처음에는 for 문으로 곱하기를 해서 결과를 구하려고 했다. 하지만 몇번을 돌릴지 조건이 나와있지않았고, 더 까다롭다는걸 알았다. 그래서 고민끝에 알아낸 방법이 나누는 것이었다. (하지만 이미 많은 분들은 이렇게 푸셧다..) 뭔가 대단한걸 발견한줄 알앗는데 코드까지 똑같앗다. 조건1) b가 c보다 크거나 같으면 손익분기점이 절대 없다. 왜냐하면 a 를 더하기 때문이다... 무조건 차익에서 이득이 나야 수익이..

반응형