본문 바로가기

Algorithm/Baekjoon52

[백준] 주몽 / 1940번 / 파이썬 / Python 💡solutions ) 💬 처음에 문제 풀 때 별 생각없이 풀어서,, 주어진 재료들 중 두 재료씩 묶을 수 있는 모든 경우의 수를 itertools의 combinations을 통해 구했다가 시간초과가 났다. 주어진 재료 개수의 범위가 N(1 ≤ N ≤ 15,000)인 것을 감안하면 시간 초과가 나는 게 당연하다. 참고로 파이썬의 초당 2,000만번의 연산이 가능하다고 한다. 💬 두 번째 시도 -> 해당 문제는 투포인터 문제 유형이다. 먼저 정렬을 한 후 두 가지 인덱스 값(left는 맨 처음, right는 맨 끝 재료를 나타내기 위함)을 정의한다. 💬 left, right가 가리키는 두 재료의 합이 m과 같으면 answer += 1, m보다 작으면 left += 1, m보다 크면 right -= 1을 해.. 2021. 10. 31.
[백준] 20055번 / 컨베이어 벨트 위의 로봇 / 파이썬 / Python 💡solutions ) 💬 시뮬레이션 유형으로 문제에서 주어진 조건들을 차례대로 구현하면 되는 문제 💬 deque 자료형과 rotate() 메소드 사용하여 컨베이어가 한칸씩 이동하는 것을 나타냄 👨‍💻code ) import sys from collections import deque input = sys.stdin.readline n, k = map(int, input().split()) conveyor_belt = deque(list(map(int, input().split()))) robot = deque([0]*n) answer = 0 while True: robot.rotate(1) conveyor_belt.rotate(1) robot[-1] = 0 for i in range(n-2, -1, -.. 2021. 10. 23.
[백준] 1244번 / 스위치 켜고 끄기 / 파이썬 / python 💡solutions ) 💬 문제 설명에서 주어진 정보를 코드로 구현하면 되는 시뮬레이션 문제 💬 남학생인 경우, 여학생인 경우 나눠서 처리하기 위해 if_boy, if_girl 함수 구현함 💬 마지막 출력에서 스위치 상태 출력이 20개가 넘는 경우 20개씩 끊어서 출력해야 하는 것을 주의해야 함 👨‍💻code ) import sys def if_boy(num, switch_state): for i in range(1, len(switch_state)+1): if i % num == 0: if switch_state[i-1]: switch_state[i-1] = 0 else: switch_state[i-1] = 1 def if_girl(num, switch_state): front = num-2 back .. 2021. 10. 14.
[백준] 10815번 / 숫자 카드 / 파이썬 / python 💡solutions ) 💬 딕셔너리 자료형 사용하여 문제를 해결함 💬 상근이가 가지고 있는 카드 리스트를 가지고 딕셔너리 형태로 만든다. key를 카드 번호, value에 몇장인지 값을 저장 💬 주어진 m개의 카드 리스트로 for 반복문을 돌며 위에서 만든 딕셔너리 key값으로 존재하는지 확인 후 존재하면 해당 value값을 answer 리스트에 저장하여 마지막에 출력한다. 👨‍💻code ) import sys input = sys.stdin.readline n = int(input()) n_list = sorted(list(map(int, input().split()))) m = int(input()) m_list = list(map(int, input().split())) n_dict = {} for.. 2021. 10. 13.
[백준] 2979번 / 트럭 주차 / 파이썬 / Python 👨‍💻code ) from abc import ABCMeta import sys input = sys.stdin.readline a, b, c = map(int, input().rstrip().split(' ')) time_table = [0]*101 for i in range(3): arrive, depart = map(int, input().rstrip().split(' ')) for j in range(arrive-1,depart-1): time_table[j] += 1 answer = 0 for k in time_table: if k == 1: answer += a*k elif k == 2: answer += b*k elif k == 3: answer += c*k print(answer) 📌des.. 2021. 10. 7.
[백준] 1173번 / 운동 / 파이썬 / Python 👨‍💻code ) import sys input = sys.stdin.readline N, m, M, T, R = map(int, input().split()) pulse = m time = 0 exercise = 0 while exercise M: time = -1 break time += 1 if pulse + T 2021. 10. 6.