반응형

A+B - 2

티어 : Bronze 5
시간 제한 : 1 초
메모리 제한 : 128 MB
알고리즘 분류 : 수학, 구현, 사칙연산

 

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10)

 

출력

첫째 줄에 A+B를 출력한다.

 

예제 입출력


Algorithm

입출력

 

Code

A = int(input())
B = int(input())
print(A+B)

메모리: 30840 KB
시간: 76 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 10951] A+B - 4 Python  (0) 2022.05.23
[백준 10950] A+B - 3 Python  (0) 2022.05.23
[백준 10816] 숫자 카드 2 Python  (0) 2022.05.16
[백준 10866] 덱 Python  (0) 2022.05.12
[백준 5972] 택배 배송 Python  (0) 2022.05.12
반응형

toss away 버리다

They toss us away like yesterday's jam.

그들은 우리를 어제자 잼처럼 버려.

 

sort of 어느 정도, 뭐랄까

That's the sort of place this is, Jen.

여긴 뭐랄까 그런 곳이에요 Jen.

 

affair 불륜

A lot of sexy people not doing much work and having affairs.

일은 많이 안하고 불륜을 저지르는 많은 섹시한 사람들.

 

leave 남기고 가다

Well Jen, this is where I leave you.

Jen 여기가 내가 너를 남기고 갈 곳이에요. (= 여기서부터는 혼자 가세요.)

 

engage (주의/관심을) 사로잡다 끌다

such 그런 것

I'm sorry, myself and Maurice were just engaged in quite a serious discussion about books and such.

죄송해요, 저와 Maurice는 꽤 책들과 그런것에 관한 심각한 논의에 빠져있었어요.

 

disturb 방해하다

Let me disturb you.

제가 방해좀 할게요.

 

sort out 해결하다

I'm going to sort this out.

내가 해결할게.

 

wound 상처, 부상

Roy, you've got a head wound there.

Roy 너 머리에 상처있어.

반응형

'영어 쉐도잉 > The IT Crowd' 카테고리의 다른 글

[The IT Crowd] 쉐도잉 1일차  (0) 2022.05.05
반응형

숫자 카드 2

티어 : Silver 4
시간 제한 : 1 초
메모리 제한 : 256 MB
알고리즘 분류 : 자료 구조, 정렬, 이분 탐색

 

문제

숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.

셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.

 

출력

첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 몇 개 가지고 있는지를 공백으로 구분해 출력한다.

 

예제 입출력


Algorithm

1. 숫자 입력받을 때 Dictionary에 해당 숫자 개수 저장
2. M개 숫자에 대해 Dictionary의 value 출력

 

Code

# Dictionary 이용
N = int(input())
num_list = list(map(int, input().split()))
nums = {}
for num in num_list:
    if num not in nums:
        nums[num] = 1
    else:
        nums[num] += 1

M = int(input())
num_list = list(map(int, input().split()))
for num in num_list:
    if num in nums:
        print(nums[num], end = ' ')
    else:
        print(0, end = ' ')

메모리: 132176 KB
시간: 936 ms

 

# bisect 이용
import bisect

N = int(input())
num_list = list(map(int, input().split()))

# 오름차순 정렬
num_list.sort()

M = int(input())
lists = list(map(int, input().split()))

for num in lists:
    first = bisect.bisect_left(num_list, num)
    second = bisect.bisect_right(num_list, num)
    print(second-first, end = ' ')

메모리: 114300 KB

시간: 1696 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 10950] A+B - 3 Python  (0) 2022.05.23
[백준 2558] A+B - 2 Python  (0) 2022.05.23
[백준 10866] 덱 Python  (0) 2022.05.12
[백준 5972] 택배 배송 Python  (0) 2022.05.12
[백준 1932] 정수 삼각형 Python  (0) 2022.05.09
반응형

티어 : Silver 4
시간 제한 : 0.5 초 (추가 시간 없음)
메모리 제한 : 256 MB
알고리즘 분류 : 자료 구조, 덱

 

문제

정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 여덟 가지이다.

  • push_front X: 정수 X를 덱의 앞에 넣는다.
  • push_back X: 정수 X를 덱의 뒤에 넣는다.
  • pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 덱에 들어있는 정수의 개수를 출력한다.
  • empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
  • front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.

 

입력

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

 

출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

 

예제 입출력


Algorithm

Dequeue, 구현-Simulation

 

Code

from collections import deque
import sys
input = sys.stdin.readline

N = int(input())
queue = deque()
for _ in range(N):
    order = input().rstrip()
    # 빈칸이 들어있으면 명령어와 숫자 분리
    if ' ' in order:
        order, num = order.split()
        num = int(num)
    
    if order == 'push_front':
        queue.appendleft(num)
    elif order == 'push_back':
        queue.append(num)
    elif order == 'pop_front':
        # 덱에 들어있는 정수가 없는 경우 -1 출력
        if not queue:
            print(-1)
        else:
            print(queue[0])
            queue.popleft()
    elif order == 'pop_back':
        # 덱에 들어있는 정수가 없는 경우 -1 출력
        if not queue:
            print(-1)
        else:
            print(queue[-1])
            queue.pop()
    elif order == 'size':
        print(len(queue))
    elif order == 'empty':
        # 덱이 비어있으면 1, 비어있지 않으면 0 출력
        if not queue:
            print(1)
        else:
            print(0)
    elif order == 'front':
        # 덱에 들어있는 정수가 없는 경우 -1 출력
        if not queue:
            print(-1)
        else:
            print(queue[0])
    else:
        # 덱에 들어있는 정수가 없는 경우 -1 출력
        if not queue:
            print(-1)
        else:
            print(queue[-1])

메모리: 32468 KB
시간: 96 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 2558] A+B - 2 Python  (0) 2022.05.23
[백준 10816] 숫자 카드 2 Python  (0) 2022.05.16
[백준 5972] 택배 배송 Python  (0) 2022.05.12
[백준 1932] 정수 삼각형 Python  (0) 2022.05.09
[백준 1158] 요세푸스 문제 Python  (0) 2022.04.21
반응형

택배 배송

티어 : Gold 5
시간 제한 : 1 초
메모리 제한 : 128 MB
알고리즘 분류 : 그래프 이론, 다익스트라

 

문제

농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는 구두쇠라서 최소한의 소들을 만나면서 지나가고 싶습니다.

농부 현서에게는 지도가 있습니다. N (1 <= N <= 50,000) 개의 헛간과, 소들의 길인 M (1 <= M <= 50,000) 개의 양방향 길이 그려져 있고, 각각의 길은 C_i (0 <= C_i <= 1,000) 마리의 소가 있습니다. 소들의 길은 두 개의 떨어진 헛간인 A_i 와 B_i (1 <= A_i <= N; 1 <= B_i <= N; A_i != B_i)를 잇습니다. 두 개의 헛간은 하나 이상의 길로 연결되어 있을 수도 있습니다. 농부 현서는 헛간 1에 있고 농부 찬홍이는 헛간 N에 있습니다.

다음 지도를 참고하세요.

           [2]---
          / |    \
         /1 |     \ 6
        /   |      \
     [1]   0|    --[3]
        \   |   /     \2
        4\  |  /4      [6]
          \ | /       /1
           [4]-----[5] 
                3  

농부 현서가 선택할 수 있는 최선의 통로는 1 -> 2 -> 4 -> 5 -> 6 입니다. 왜냐하면 여물의 총합이 1 + 0 + 3 + 1 = 5 이기 때문입니다.

농부 현서의 지도가 주어지고, 지나가는 길에 소를 만나면 줘야할 여물의 비용이 주어질 때 최소 여물은 얼마일까요? 농부 현서는 가는 길의 길이는 고려하지 않습니다.

 

입력

첫째 줄에 N과 M이 공백을 사이에 두고 주어집니다.

둘째 줄부터 M+1번째 줄까지 세 개의 정수 A_i, B_i, C_i가 주어집니다.

 

출력

첫째 줄에 농부 현서가 가져가야 될 최소 여물을 출력합니다.

 

예제 입출력


Algorithm

최단거리 - Dijkstra
1. 양방향 그래프 생성
2. Dijkstra 최단거리 구하기

 

Code

def dijkstra(start):
    queue = []
    # 시작 노드로 가는 최단 경로 0으로 설정
    heapq.heappush(queue, (start, 0))
    distance[start] = 0
    
    while queue:
        # 최단거리가 가장 짧은 노드 꺼내기
        now, dist = heapq.heappop(queue)
        
        # 이미 처리된 적 있는 노드인지 확인
        if distance[now] < dist:
            continue

        # 인접한 헛간으로 이동
        for i, C in graph[now]:
            cost = dist + C
            # 현재 노드를 거쳐서 다른 노드로 이동하는 거리가 더 짧은 경우
            if cost < distance[i]:
                distance[i] = cost
                heapq.heappush(queue, (i, cost))
    
import heapq
import sys
input = sys.stdin.readline
INF = 10e9

N, M = map(int, input().split())
graph = [[] for _ in range(N+1)]
distance = [INF for _ in range(N+1)]
visited = [False for _ in range(N+1)]
for _ in range(M):
    A, B, C = map(int, input().split())
    graph[A].append((B, C))
    graph[B].append((A, C))

dijkstra(1)
print(distance[-1])

메모리: 51188KB
시간: 968ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 10816] 숫자 카드 2 Python  (0) 2022.05.16
[백준 10866] 덱 Python  (0) 2022.05.12
[백준 1932] 정수 삼각형 Python  (0) 2022.05.09
[백준 1158] 요세푸스 문제 Python  (0) 2022.04.21
[백준 10845] 큐 Python  (0) 2022.04.20
반응형

정수 삼각형

티어 : Silver 1
시간 제한 : 2 초
메모리 제한 : 128 MB
알고리즘 분류 : 다이나믹 프로그래밍

 

문제

        7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5

위 그림은 크기가 5인 정수 삼각형의 한 모습이다.

맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다.

삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다.

 

입력

첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.

 

출력

첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다.

 

예제 입출력


Algorithm

Dynamic Programming
dp[i+1][j] = max(dp[i+1][j], dp[i][j] + table[i+1][j])
dp[i+1][j+1] = max(dp[i+1][j+1], dp[i][j] + table[i+1][j+1])

 

Code

N = int(input())
table = [[] for _ in range(N+1)]
for i in range(1, N+1):
    table[i] += list(map(int, input().split()))
    
dp = [[] for _ in range(N+1)]
for i in range(N+1):
    for j in range(i):
        dp[i].append(0)

dp[1] = table[1]
for i in range(1, len(table)-1):
    for j in range(len(table[i])):
        dp[i+1][j] = max(dp[i+1][j], dp[i][j] + table[i+1][j])
        dp[i+1][j+1] = max(dp[i+1][j+1], dp[i][j] + table[i+1][j+1])

print(max(dp[-1]))

메모리: 39060 KB
시간: 292 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 10866] 덱 Python  (0) 2022.05.12
[백준 5972] 택배 배송 Python  (0) 2022.05.12
[백준 1158] 요세푸스 문제 Python  (0) 2022.04.21
[백준 10845] 큐 Python  (0) 2022.04.20
[백준 20056] 마법사 상어와 파이어볼 Python  (0) 2022.04.20
반응형

embarrras : 당황스럽게 만들다

Hope this doesn't embarrass you, Jen.

이게 당신을 당황스럽게 하지는 않았으면 좋겠어요 Jen.

 

CV(Curriculum Vitae) : 이력서

I'm going to put you in IT because you said on your CV you have a lot of experience with the whole computer thing.

당신이 당신의 이력서에 컴퓨터와 관련된 모든 것들에 경험이 많다고 적었기 때문에 저는 당신을 IT 부서로 배치할거에요. 

 

go on : 말을 계속 하다.

I could go on.

저는 계속 얘기할 수 있어요.

 

bit : 조각

on the floor : 지면에

The bit that goes on the floor down there.

바닥에 내려놓는 그 조각.

 

settle : 결정하다

It's settled.

결정됐어요.

 

there you go. 됐어요. (일이 잘 되었다는 의미)

 

You see. : 봐봐. (You know what과 유사한 의미)

hooking : SW 요소들 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에 바꾸거나 가로채는 명령, 방법 (sw공학 용어)

unless : ~하지 않는 한

be about to : 막 ~ 하려던 참이다. ~할 예정이다. (be going to 보다 훨씬 더 가까운 미래를 나타내며 be going to 는 이미 계획이 세워져 있는 것을 하거나 미래의 상황을 예측/추측할 때 쓰임)

You see, the driver hooks a function by patching the system call table so it's not safe to unload it unless another thread's about to jump in there and do its stuff.

드라이버는 시스템 콜 테이블을 패치함으로써 함수를 훅해요. 그러면 다른 스레드가 끼어들어서 그 일을 하지 않는 한  그걸 다시 올리는 건 안전하지 않겠죠.

 

end up : 끝나다. 결국 ~한 상태에 처하게 되다.

in the middle of : ~하는 중인

invalid : 잘못된

And you don't want to end up in the middle of invalid memory.

그리고 당신은 결국 잘못된 메모리 상태에 처하고 싶지 않겠죠.

 

make me. : 나를 멈춰보던가.

Really, why don't you come down here and make me then?

정말요? 그럼 여기로 내려와서 나를 멈춰보시던가요.

 

afraid : 두려워하는

You think I'm afraid of you?

당신은 제가 당신을 두려워할 거라고 생각하시나요?

 

I told her. : 이만하면 알아들었겠지.

 

It's about time ~. : 드디어 ~ 하는군.

It's about time you got back.

드디어 돌아왔군.

 

It's been all go. : 모든 것이 끝났어.

= It has been all go.

 

hit it off : 죽이 맞다. 잘 맞다.

Did you and her hit it off?

 

define : 정의하다.

Define hit it off.

잘 맞는 다는 말이 뭔데.

 

rest : ~에 받치다.

And while I was working on it she rested a cup on my back.

그리고 내가 일하고 있을 때 그녀는 내 등에 컵을 받치고 있었어.

 

whatsoever : whatever(전혀)의 강조형

No respect whatsoever.

 

pally-wally : 친한 친구를 부르는 옛말

It's like they're pally-wally when there's a problem with their printer, but once it's fixed ...

그들의 프린터에 문제가 있으면 친한 친구같은데 그게 고쳐지면 ...

반응형

'영어 쉐도잉 > The IT Crowd' 카테고리의 다른 글

[The IT Crowd] 쉐도잉 2일차  (0) 2022.05.19
반응형

요세푸스 문제

티어 : Silver 4
시간 제한 : 2 초
메모리 제한 : 256 MB
알고리즘 분류 : 자료구조, 큐

 

문제

요세푸스 문제는 다음과 같다.

1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 <3, 6, 2, 7, 5, 1, 4>이다.

N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

 

출력

예제와 같이 요세푸스 순열을 출력한다.

 

예제 입출력


Algorithm

구현
1. list의 index에 해당하는 숫자 answer에 저장하고 remove
2. index의 값 K씩 증가시키며 list 비어있지 않을 때만 반복되도록 구현

 

Code

N, K = map(int, input().split())

nums = list(range(1, N+1))
index = K-1
answer = []
while True:
    # 현재 index의 사람 없애기
    answer.append(nums[index])
    nums = nums[:index] + nums[index+1:]
    if not nums:
        break
    index = (index + K-1) % len(nums)

print('<' + ', '.join(list(map(str, answer))) + '>')

메모리: 30840 KB
시간: 164 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 5972] 택배 배송 Python  (0) 2022.05.12
[백준 1932] 정수 삼각형 Python  (0) 2022.05.09
[백준 10845] 큐 Python  (0) 2022.04.20
[백준 20056] 마법사 상어와 파이어볼 Python  (0) 2022.04.20
[백준 2636] 치즈 Python  (0) 2022.04.20

+ Recent posts