알고리즘과 자료구조/알고리즘 파이썬(4)
-
[백준] 뱀 - 3190
www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 이번 문제는 구현 문제입니다. 우선 문제를 어떤 방식으로 분석했는지 알아봅시다. 문제에서의 뱀은 매초 1의 길이로 이동합니다. 머리를 먼저 길이 1 만큼 뻗은 다음 꼬리가 한칸 좁혀오는 형식입니다. 사과를 먹으면 뱀의 길이가 1 증가합니다. 이때 꼬리가 수축하지 않고 가만히 있음으로써 길의 길이를 증가시킵니다. 종료 조건은 뱀이 움직이면서 자신의 몸과 부딪는 경우 또는 벽과 부딪는 경우 입니다. 이제 자세한 문제 조건..
2021.02.16 -
[백준] - 18406번 럭키 스트레이트
www.acmicpc.net/problem/18406 18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net 간단하게 문제의 요구사항에 맞추어서 문제를 푸시면 됩니다. n = input() left_sum = 0 for i in range(len(n)//2): x = int(n[i]) left_sum+=x right_sum=0 for i in range(len(n)//2,len(n)): x = int(n[i]) right_sum+=x if left_sum == right_sum: print("LUCKY") else: print("READY")
2021.02.12 -
그리디 알고리즘
그리디 알고리즘 = 현재 상황에서 지금 당장 좋은 것만 고르는 방법. 코테에서는 그리디 문제를 풀기 위해 최소한의 아이디어가 필요하다. 그리고 이러한 아이디어가 타당성이 있는지 검토를 해야한다. 코테에서의 그리디 문제는 그리디 알고리즘을 통해 얻은 해가 가장 최적이기 때문에 출제자의 의도를 파악하고 그리디하게 문제를 풀자. 대표적으로 거스름돈 문제를 보자. 거스름돈 문제 (500, 100, 50, 10) 해법 : 가장 큰 화폐 단위부터 돈을 거슬러 준다. 1. 동전들 중 큰 단위가 항상 작은 단위의 배수이다. 2. 작은 단위의 동전로 아무리 조합을 해도 큰 단위를 포함했을 때보다 최적인 상태를 만들 수 없다. 따라서 그리디하게 생각하고 이를 뒷받침해줄 근거를 찾는것이 중요하다. n = 1650 cnt =..
2020.09.30 -
[백준] - 2805번 나무자르기
대표적인 2진 탐색문제이다. 다만 소스코드를 파이썬으로 제출하면 시간초과가 나온다. pypy3로 제출해야한다. import sys n, m = map(int,input().split()) tree = list(map(int,sys.stdin.readline().split())) left = 0 right = max(tree) while leftmid: total += x-mid if total < m: right= mid-1 else: left = mid +1 result = mid print(result)
2020.08.30