[백준]2217번 로프 - 그리디
·
SW개발/코딩테스트
n = int(input()) weight = [] for i in range(n): weight.append(int(input())) weight.sort(reverse=True) max = weight[0] for i in range(1, n): if max < weight[i] * (i+1): max = weight[i] * (i+1) print(max) 코드 설명 각 무게를 weight 리스트에 입력 받은 후 내림차순으로 정렬한다. 현재까지 가장 큰 값은 weight[0] 이다. 반복문을 수행하면서 weight[i] * (i+1) 의 값이 max 보다 크면 갱신하여 준다. Point : 먼저 중량순으로 정렬해주기 위해 sort(reverse=True) 함수를 이용하여 준다. 맨 처음 최대 중량은 ..
[백준]5585번 거스름돈 - 그리디
·
SW개발/코딩테스트
n = int(input()) n = 1000 - n answer = 0 while True: if n // 500 >= 1: answer = answer + (n // 500) n = n - ((n // 500) * 500) elif n // 100 >= 1: answer = answer + (n // 100) n = n - ((n // 100) * 100) elif n // 50 >= 1: answer = answer + (n // 50) n = n - ((n // 50) * 50) elif n // 10 >= 1: answer = answer + (n // 10) n = n - ((n // 10) * 10) elif n // 5 >= 1: answer = answer + (n // 5) n = n ..
[백준]11047번 동전0 - 그리디
·
SW개발/코딩테스트
n, k = map(int,input().split()) a = [] cnt = 0 for i in range(n): a.append(int(input())) for i in range(len(a)-1, -1, -1): if k < a[i] : continue cnt = cnt + int(k / a[i]) k = k % a[i] if k == 0: break print(cnt) 코드 설명 먼저 a 리스트에 이용가능한 동전의 가치를 저장해준다. 가장 큰 가치를 가진 동전을 먼저 사용해야 하므로 반복문을 거꾸로 수행한다. 만약 동전의 가치가 K원보다 크다면 continue를 통해 다음 반복을 수행한다. 그렇지 않다면 카운트에 그 몫을 더해준다. k 는 나머지 연산을 통해 숫자를 갱신해준다. k == 0 이 ..
[백준]2839번 설탕 배달 - 그리디
·
SW개발/코딩테스트
n = int(input()) answer = 0 while True: if n % 5 == 0: answer = answer + n // 5 print(answer) break n -= 3 answer += 1 if n < 0 : print(-1) break 코드 설명 5키로의 봉지로만 나눌 수 있을 경우 그 몫을 answer에 더해준다. 나눌 수 없을 경우 3키로 봉지를 하나씩 선택하며 anwer 를 증가시켜 준다. 만약 n이 음수로 된다면 정확하게 만들지 못하는 것이므로 -1을 출력한다. Point : 5키로 봉지로 나눌 수 있을 경우에는 그 몫을 더하고 그렇지 못할 경우에는 3씩 빼주는 연산을 수행한다. 이 과정을 통해 적은 봉지수를 구할 수 있다. 만약 진행중 n의 값이 음수가 된다면 만들 수 ..
[백준]5430번 AC - 덱
·
SW개발/코딩테스트
from collections import deque import sys n = int(sys.stdin.readline()) for i in range(n): command = sys.stdin.readline().strip() # 명령어 length = int(sys.stdin.readline()) if length == 0: input() deque_ = deque([]) else: # 대괄호는 빼고 입력 받기 deque_ = deque( sys.stdin.readline()[1:-2].strip().split(',')) #print(deque_) flag = 1 # 뒤집기 체크 flag2 = 1 # 에러 체크 for i in range(len(command)): if command[i] == 'R..
[백준]1021번 회전하는 큐 - 덱
·
SW개발/코딩테스트
from collections import deque import sys n, m = map(int, sys.stdin.readline().split()) deque = deque([]) for i in range(1, n + 1): deque.append(i) a = list(map(int, sys.stdin.readline().split())) cnt = 0 for i in range(m): # 2번 연산이 유리한 경우, 뽑으려는 값이 덱에서의 인덱스가 더 작을 경우 if deque.index(a[i]) < len(deque) - deque.index(a[i]): while True: if deque[0] == a[i]: deque.popleft() break else: deque.append(deq..
[백준]10866번 덱 - 덱
·
SW개발/코딩테스트
from collections import deque import sys n = int(sys.stdin.readline()) deque = deque([]) for i in range(n): command = sys.stdin.readline().strip() if command.split()[0] == 'push_front': deque.appendleft(int(command.split()[1])) elif command.split()[0] == 'push_back': deque.append(int(command.split()[1])) elif command == 'pop_front': if len(deque) == 0: print(-1) else: print(deque.popleft()) elif..
[Python]패키지란?
·
SW개발/Python
패키지란 무엇인가? Package 는 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉토리 구조)으로 관리할 수 있게 한다. 예를 들어 모듈의 이름이 A.B 라면 A는 패키지 이름, B는 A패키지의 B모듈을 뜻한다. 패키지 예시 example/ __init__.py sound/ __init__.py echo.py wav.py grapchic/ __init__.py screen.py render.py play/ __init__.py run.py test.py 위의 구조에서 example, sound, graphic, play 는 디렉터리 이름이고 .py 의 확장자는 파이썬 모듈이다. example 디렉터리는 이 패키지의 루트 이름을 뜻하고, 하위에 있는 것들은 서브 디렉터리를 뜻한다. 구조화를 하는 이유? ..
[Python]if __name__ == "__main__" 란?
·
SW개발/Python
if __name__ == "__main__" 란? __name__ 변수는 파이썬이 내부적으로 사용하는 특별한 변수 이름이다. 만약 example.py 파일을 실행할 경우 example.py 의 __name__ 변수에는 __main__ 값이 저장된다. 하지만 다른 파이썬 모듈에서 import 할 경우에는 모듈의 이름 값인 example 이 저장되게 된다. 사용하는 이유? 현재 스크립트 파일이 프로그램의 시작점이 맞는지 판단하는 작업이다. 즉, 스크립트 파일이 메인 프로그램으로 사용될 경우와 모듈로 사용될 경우를 구분하기 위해서 사용하게 된다. 스크립트 파일로 실행하거나 모듈로 사용하는 코드 def add(a, b): return a + b def mul(a, b): return a * b if __nam..
[Python]모듈이란?
·
SW개발/Python
모듈 모듈이란 함수나 변수 또는 클래스를 모아놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게 만든 파이썬 파일이라고도 할 수 있다. 모듈 만들기 # mod1.py def add(a, b): return a + b def sub(a, b): return a - b 위와 같이 간단함 모듈을 생성하였다. 그렇다면 모듈은 어떻게 이용해야 할까? 모듈 불러오기 import mod1 print(mod1.add(3, 4)) print(mod1.sub(3, 2)) import 모듈이름을 통해 모듈을 불러올 수 있다. .py의 확장자는 붙이지 않도록 한다. from mod1 import add add(3, 4) from 모듈이름 import 모듈함수 이런 형식을 이용하면 모듈 이름을 붙이지 않고 ..