728x90

Algorithm (Python, Java, SQL) 235

[Python Algorithm] 자료구조(스택) - 후위식 연산

> 자료구조 활용 - 스택, 큐, 해쉬, 힙 (스택 편) 📖 문제 : 후위식 연산 후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요. 만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 21입니다. 입력설명 첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다. 식은 1~9의 숫자와 +, -, *, /, (, ) 연산자로만 이루어진다. 출력설명 연산한 결과를 출력합니다. 입력예제 1 352+*9- 출력예제 1 12 import sys s = input() stack = [] a = b = 0 for x in s: if x.isdecimal(): stack.append(int(x)) else: if x == '+': b = stack.p..

[Python Algorithm] 자료구조(스택) - 후위표기식 만들기

> 자료구조 활용 - 스택, 큐, 해쉬, 힙 (스택 편) 📖 문제 : 후위표기식 만들기 중위표기식이 입력되면 후위표기식으로 변환하는 프로그램을 작성하세요. 중위표기식은 우리가 흔히 쓰은 표현식입니다. 즉 3+5 와 같이 연산자가 피연산자 사이에 있 으면 중위표기식입니다. 후위표기식은 35+ 와 같이 연산자가 피연산자 뒤에 있는 표기식입니다. 예를 들어 중위표기식이 3+5*2 를 후위표기식으로 표현하면 352*+ 로 표현됩니다. 만약 다음과 같이 연산 최우선인 괄호가 표현된 식이라면 (3+5)*2 이면 35+2* 로 바꾸어야 합니다. ※후위 표기식이 이해가 안되면 구글링으로 공부해보는 것도 좋습니다. 입력설명 첫 줄에 중위표기식이 주어진다. 길이는 100을 넘지 않는다. 식은 1~9의 숫자와 +, -, *..

[Python Algorithm] 자료구조(스택) - 쇠막대기

> 자료구조 활용 - 스택, 큐, 해쉬, 힙 (스택 편) 📖 문제 : 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에 서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레 이저의 배치는 다음 조건을 만족한다. • 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. • 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. • 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 아래 그림은 위 조건을 만족하는 예를 보여준다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는..

[Python Algorithm] 자료구조(스택) - 가장 큰 수

> 자료구조 활용 - 스택, 큐, 해쉬, 힙 (스택 편) : 스택은 LIFO 📖 문제 : 가장 큰 수 선생님은 현수에게 숫자 하나를 주고, 해당 숫자의 자릿수들 중 m개의 숫자를 제거하여 가장 큰 수를 만들라고 했습니다. 여러분이 현수를 도와주세요.(단 숫자의 순서는 유지해야 합니다) 만약 5276823 이 주어지고 3개의 자릿수를 제거한다면 7823이 가장 큰 숫자가 됩니다. 입력설명 첫째 줄에 숫자(길이는 1000을 넘지 않습니다)와 제가해야할 자릿수의 개수가 주어집니다. 출력설명 가장 큰 수를 출력합니다. 입력예제 1 5276823 3 출력예제 1 7823 입력예제 2 9977252641 5 출력예제 2 99776 import sys num, m = map(int, input().split()) n..

[Python Algorithm] 그리디 알고리즘 - 역수열

> 이분 탐색(결정알고리즘) & 그리디 알고리즘 (그리디알고리즘 편) 📖 문제 : 역수열 1부터 n까지의 수를 한 번씩만 사용하여 이루어진 수열이 있을 때, 1부터 n까지 각각의 수 앞 에 놓여 있는 자신보다 큰 수들의 개수를 수열로 표현한 것을 역수열이라 한다. 예를 들어 다음과 같은 수열의 경우 4 8 6 2 5 1 3 7 1앞에 놓인 1보다 큰 수는 4, 8, 6, 2, 5. 이렇게 5개이고, 2앞에 놓인 2보다 큰 수는 4, 8, 6. 이렇게 3개, 3앞에 놓인 3보다 큰 수는 4, 8, 6, 5 이렇게 4개...... 따라서 4 8 6 2 5 1 3 7의 역수열은 5 3 4 0 2 1 1 0 이 된다. n과 1부터 n까지의 수를 사용하여 이루어진 수열의 역수열이 주어졌을 때, 원래의 수열을 출력..

[Python Algorithm] 그리디 알고리즘 - 증가수열 만들기(그리디)

> 이분 탐색(결정알고리즘) & 그리디 알고리즘 (그리디알고리즘 편) 📖 문제 : 증가 수열 만들기 1 부터 N까지의 모든 자연수로 구성된 길이 N의 수열이 주어집니다. 이 수열의 왼쪽 맨 끝 숫자 또는 오른쪽 맨 끝 숫자 중 하나를 가져와 나열하여 가장 긴 증가수열 을 만듭니다. 이때 수열에서 가져온 숫자(왼쪽 맨 끝 또는 오른쪽 맨 끝)는 그 수열에서 제거됩니 다. 예를 들어 2 4 5 1 3 이 주어지면 만들 수 있는 가장 긴 증가수열의 길이는 4입니다. 맨 처음 왼쪽 끝에서 2를 가져오고, 그 다음 오른쪽 끝에서 3을 가져오고, 왼쪽 끝에서 4, 왼쪽끝에서5를가져와 2345증가수열을만들수있습니다. 입력설명 첫째 줄에 자연수 N(3

[Python Algorithm] 그리디 알고리즘 - 침몰하는 타이타닉

> 이분 탐색(결정알고리즘) & 그리디 알고리즘 (그리디알고리즘 편) 📖 문제 : 침몰하는 타이타닉 유럽에서 가장 유명했던 유람선 타이타닉이 침몰하고 있습니다. 유람선에는 N명의 승객이 타고 있습니다. 구명보트를 타고 탈출해야 하는데 타이타닉에 있는 구명보트는 2명 이하로만 탈 수 있 으며, 보트 한 개에 탈 수 있는 총 무게도 M kg 이하로 제한되어 있습니다. N명의 승객 몸무게가 주어졌을 때 승객 모두가 탈출하기 위한 구명보트의 최소개수를 출력하는 프로그램을 작성하세요. 입력설명 첫째 줄에 자연수 N(5

[Python Algorithm] 그리디 알고리즘 - 창고 정리

> 이분 탐색(결정알고리즘) & 그리디 알고리즘 (그리디알고리즘 편) 📖 문제 : 창고 정리 창고에 상자가 가로방향으로 일렬로 쌓여 있습니다. 만약 가로의 길이가 7이라면 1열은 높이가 6으로 6개의 상자가 쌓여 있고, 2열은 3개의 상자, 3열은 9개의 상자가 쌓여 있 으며 높이는 9라고 읽는다. 창고 높이 조정은 가장 높은 곳에 상자를 가장 낮은 곳으로 이동하는 것을 말한다. 가장 높은 곳이나 가장 낮은 곳이 여러곳이면 그 중 아무거나 선택하면 된다. 위에 그림을 1회 높이 조정을 하면 다음과 같아진다. 창고의 가로 길이와 각 열의 상자 높이가 주어집니다. m회의 높이 조정을 한 후 가장 높은 곳 과 가장 낮은 곳의 차이를 출력하는 프로그램을 작성하세요. 입력설명 첫 번째 줄에 창고 가로의 길이인 자..

[Python Algorithm] 그리디 알고리즘 - 씨름 선수

> 이분 탐색(결정알고리즘) & 그리디 알고리즘 (그리디알고리즘 편) 📖 문제 : 씨름 선수 현수는 씨름 감독입니다. 현수는 씨름 선수를 선발공고를 냈고, N명의 지원자가 지원을 했습니다. 현수는 각 지원자의 키와 몸무게 정보를 알고 있습니다. 현수는 씨름 선수 선발 원칙을 다음과 같이 정했습니다. “다른 모든 지원자와 일대일 비교하여 키와 몸무게 중 적어도 하나는 크거나, 무거운 지원자만 뽑기로 했습니다.” 만약 A라는 지원자보다 키도 크고 몸무게도 무거운 지원자가 존재한다면 A지원자는 탈락입니다. 입력설명 첫째 줄에 지원자의 수 N(5

[Python Algorithm] 그리디 알고리즘 - 회의실 배정

> 이분 탐색(결정알고리즘) & 그리디 알고리즘 (그리디알고리즘 편) 그리디 알고리즘 : 문제를 풀어나가는 과정, 단계에 있어서 가장 좋은 것을 찾는 ! 그리디에서 어떻게 가장 좋은 것을 판별 ? -> 정렬 ! -> 차례로 선택 📖 문제 : 회의실 배정 한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들 려고 한다. 각 회의에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하 면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중 단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 입력설명 첫째 줄에 회의의 수 n(1

728x90