본문 바로가기

전체 글

(90)
쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 함 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. - 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. - 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. - 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다.  수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레이저의 발사 방향 이러한 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여 왼쪽부터 순서대로 표현할 수 있다. 1. 레이저는 여는 괄호와 닫는 괄호의 인접한 쌍 ‘( ) ’ ..
가장 큰 수 숫자의 자릿수들 중 M개의 숫자를 제거하여 가장 큰 수를 만드는 프로그램 작성 만약 5276823 이 주어지고, 3개의 자릿수를 제거한다면 7823이 가장 큰 숫자 첫째 줄에 숫자와 제거해야 할 자릿수의 갯수가 주어짐가장 큰 수를 출력해야 함 입력 예시) 5276823 3  출력예시)7823내가 쓴 코드import sys#sys.stdin = open("input.txt",'rt')#입력받기num, deleteNum = input().split()deleteNum = int(deleteNum)#문자열로 된 숫자열 리스트에 하나씩 넣기numLst = []for x in num: numLst.append(int(x))#결과로 나와야하는 숫자 자릿수 lengthN = len(numLst)length = ..
역수열 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 0n과 1부터 n까지의 수를 사용하여 이루어진 수열의 역수열이 주어졌을 때, 원래의 수열을 출력하는 프로그램 작성 첫번째 줄에 자연수 N이 주어지고, 두번째 줄에 역수열이 주어짐 입력 예시)85 3 4 0 2 1 1 0 출력 예시)4 8 6 2 5 1 3 7내가 쓴 코..
증가수열 만들기 1부터 N까지의 모든 자연수로 구성된 길이 N의 수열이 주어짐 이 수열의 왼쪽 맨 끝 숫자 또는 오른쪽 맨 끝 숫자 중 하나를 가져와 나열하여 가장 긴 증가수열을 만들고자 함 이때 수열에서 가져온 숫자(왼쪽 맨 끝 또는 오른쪽 맨 끝)는 그 수열에서 제거됨  예를 들어 2 4 5 1 3 이 주어지면 만들 수 있는 가장 긴 증가수열의 길이는 4 맨 처음 왼쪽 끝에서 2를 가져오고, 그 다음 오른쪽 끝에서 3을 가져오고,왼쪽 끝에서 4, 왼쪽 끝에서 5를 가져와 2 3 4 5 증가수열을 만들 수 있음  첫째 줄에 자연수 N이 입력으로 주어짐 두 번째 줄에 N개로 구성된 수열이 입력으로 주어짐  첫째 줄에 최대 증가수열의 길이를 출력하고, 두 번째 줄에 가져간 순서대로 왼쪽 끝에서 가져갔으면 ‘L', 오른쪽..
침몰하는 타이타닉 유람선에는 N명의 승객이 타고 있음 구명보트를 타고 탈출해야 하는데 타이타닉에 있는 구명보트는 2명 이하로만 탈 수 있고, 보트 한 개에 탈 수 있는 총 무게도 M kg 이하로 제한됨  N명의 승객 몸무게가 주어졌을 때 승객 모두가 탈출하기 위한 구명보트의 최소개수를 출력하는 프로그램 작성 첫째 줄에 자연수 N 주어짐둘째 줄에 N개로 구성된 몸무게 수열이 주어짐각 승객의 몸무게는 M을 넘지않음 입력예시)5 14090 50 70  100 60 출력예시)3내가 쓴 코드import syssys.stdin = open("input.txt", 'rt')N, M = map(int, input().split())weights = list(map(int, input().split()))#보트에는 2명까지! 탈 수 있음..
창고 정리 창고에 상자가 가로방향으로 일렬로 쌓여 있음가로의 길이가 7이고,1열은 높이가 6으로 6개의 상자가 쌓여있고,2열은 3개의 상자, 3열은 9개의 상자가 쌓여있으며 높이는 9. 창고 높이 조정이란 가장 높은 곳에 상자를 가장 낮은 곳으로 이동하는 것가장 높은 곳이나 가장 낮은 곳이 여러곳이면 아무거나 선택해도 됨 위 그림을 1회 높이 조정한 결과는 다음과 같음: 입력으로 창고의 가로길이가 주어지고,각 열의 상자 높이가 주어짐그 다음엔 높이 조정횟수인 M이 주어짐 M회 높이 조정을 한 후 가장 높은 곳과 가장 낮은 곳의 차이를 출력하는 프로그램 작성 입력예시) 10 69 42 68 76 40 87 14 65 76 81 50 출력예시)20내가 쓴 코드import syssys.stdin = open("input..
씨름 선수 씨름 선수 선발공고를 냈고, N명의 지원자가 지원함 씨름 선수 선발 원칙을 다음과 같음: 다른 모든 지원자와 일대일 비교하여 키와 몸무게 중 적어도 하나는 크거나, 무거운 지원자 만약 A라는 지원자보다 키도 크고 몸무게도 무거운 지원자가 존재한다면 A지원자는 탈락  첫째 줄에 지원자의 수 N 입력 받음 두 번째 줄부터 N명의 키와 몸무게 정보가 차례로 주어짐. 각 선수의 키와 몸무게는 모두 다름  씨름 선수로 뽑히는 최대 인원 출력 프로그램 작성 입력 예시) 5 172 67 183 65 180 70 170 72 181 60 출력 예시)3 *설명 (183, 65), (180, 70), (170, 72)가 선발됨 (181, 60)은 (183, 65) 때문에 탈락, (172, 67)은 (180, 70) 때문에..
회의실 배정 한 개의 회의실이 있음이를 사용하고자 하는 n개의 회의들에 대하여 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾는 프로그램 작성  회의는 한번 시작하면 중간에 중 단될 수 없음 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있음  첫째 줄에 회의의 수 n이 주어짐 둘째 줄부터 n+1 줄까지 각 회의의 정보가 주어짐: 공백을 사이에 두고 회의의 시작시간과 끝나는 시간 입력예시)51 42 33 54 65 7 출력예시)3내가 쓴 코드import syssys.stdin = open("input.txt")#가능한 회의의 최대 갯수!!를 찾는것#입력받기: 시작시간과 끝나는 시간 하나의 리스트로 담아 모든 쌍을 전체 리스트에 담기N = int(input())times = []for..