⚡️algorithm 96

[그래프, DFS] 백준 9466. 팀정하기

백준 9466번 텀 프로젝트 문제다. 문제의 원리에 cycle의 개념을 떠올려야 하고 재귀함수 사용시, 필수적으로 사용되는 sys.setrecursionlimit 함수가 필요한 이유를 배울 수 있었다. 이 문제는 순환구조로써 서로를 지목한 학생끼리 팀을 꾸리게 하고, 팀이 정해지지 않은 그 외의 학생들의 수를 출력하는 문제이다. * 패턴 이 문제는 학생을 지목하고, 지목된 학생의 지목된 학생을 찾는 식으로 진행된다. 이처럼 DFS문제는 재귀함수와 짝꿍이다. 그리고 함수를 돌 때마다, 방문여부(visited, check)를 확인하기 위한 변수를 자주 사용한다. * 코드 구조 코드의 전체구조에는 크게 DFS 선언부와 main 호출부가 있다. DFS 선언부에는 학생의 id를 입력받아 DFS를 순회했음을 표시하..

⚡️algorithm 2022.04.14

[그리디] 큰 수 만들기 (feat. stack, list[:-m])

def solution(n,m): answer = '' stack = [] for v in n: while stack and m > 0 and v > stack[-1]: stack.pop() m -= 1 stack.append(v) if m != 0: # m개 제거 못하고 for문이 끝남. 큰 수 -> 작은 수 정렬되어있는 상태 print(stack) print(m) stack = stack[:-m] # 큰수->작은수 정렬된 상태므로 맨 뒤에서 m개 제거 print(stack) answer = ''.join(map(str, stack)) # print(answer) return answer # answer = ''.join(lst) solution('654321', 1) 두번 풀었던 건데, 다시 푸니까 ..

⚡️algorithm 2022.04.12

readline 과 readlines 의 차이, 다중행 입력 (+ 외부파일 입출력 방법)

+ 파일에 새로운 내용 추가 (a 또는 w)pycharm에서 입력 세팅을 하다보면 import sys input = sys.stdin.readline 을 입력할 때, readlines가 함께 뜬다. 내 코드로 테스트할 때는 동일한 결과가 나왔는데, 사실 readlines는 말그대로 s 복수의 줄을 읽어올 때 사용하는 것이었다. readlines 함수는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려준다. _ 점프 투 파이썬 그러나, 백준에서는 입력 방식이 다르기 때문에 전체 입력값을 읽어오는 readlines를 그대로 사용할 경우 에러가 난다고 한다. 따라서 입력을 여러줄 해야 하는 경우에는, readline 단행으로 읽고 반복문을 돌리는 것이 좋다. + 프로그램의 외부에 저장된 파일을 ..

⚡️algorithm 2022.04.08

[boj 10610] sys.stdin.readline , input 에러

백준 10610번 30의 배수를 찾는 문제(그리디)에서, pycharm과 달리 자꾸만 런타임에러가 났다. pypy, python도 바꾸고, 코드도 바꿔서 돌렸으나 계속 런타임 에러가 났다. import sys input = sys.stdin.readline 을 제거했더니, 정답처리가 되었다. 다른 문제의 경우 input 입력값을 바로 int나 str으로 변환해서 받아서 sys.stdin.readline에서 삽입되는 개행문자로 인한 오류가 생길 일이 없어서 문제가 안 생겼었는데, 이 문제에서는 input 입력값을 그대로 사용하기 때문에 문제가 생겼다. (파이참 터미널에서는 개행문자가 확인되지 않았다.) 따라서, sys.stdin.readline 을 사용하고 싶다면, input().rstrip() 으로 개행..

⚡️algorithm 2022.04.07

그리디 알고리즘(Greedy Algorithm)

그리디와 이분탐색 왜 이분 탐색 다음에 그리디 알고리즘이 나왔느냐- 둘다 분할 정복, 재귀함수를 사용한다는 공통점이 있어 결이 비슷하기 때문이다. 그리디란? 그리디 알고리즘의 경우, 가장 좋은 해부터 찾아내고 나머지는 쪼개는 방식으로 진행한다. 밥먹을 때 제일 맛있는 반찬부터 먹는 욕심쟁이를 닮은 알고리즘 이랄까. 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법으로, 이것이 전체로 봤을 때도 최선이길 바라는 알고리즘이다. 따라서 적용할 수 있는 문제의 조건이 조금 까다로운 편이다. 비슷해 보여도 그리디를 쓸 수 있는 문제가 있고, 아닌 게 있다. 예를 들어, 동전을 사용해 어떤 금액을 표현하는 문제는 그리디로 풀리는데, 동전의 단위가 배수-약수관계가 아니면 그리디 알고리즘을 쓸 수 없다...

⚡️algorithm 2022.04.06

이분탐색과 업앤다운 게임

* backjoon 문제번호 이분탐색/삼분탐색 - 1654, 2805, 2110, 10815, 10816, 11662 완전탐색 - 1476, 1107, 1451, 9095, 10819, 10971, 1697, 1963, 9019, 1525, 2251, 2186, 3108, 5014, 1759, 2580, 1987, 6603, 1182, 2003, 1806, 1644, 1261, 1208, 7453, 2632, 2143 기본 문법을 얼추 떼고, 알고리즘 세계로의 입문이다. 탐색이며 시간복잡도며, 낯선 단어들을 도장깨기 하고 있다. 탐색 컴퓨터는 인간이 할 수 없는 속도로 어떤 solution을 제공한다. 예를 들어, 목적지까지 가는 1000가지의 경로 중 어떤 것이 가장 효율적인가? 같은 문제들을 컴퓨터는..

⚡️algorithm 2022.03.13