문제 설명 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 제한 사항 -첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. -첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 입출력 예 input output 5 3 4 1 1 1 - 1 2 2 3 3 1 -1 1 1 2 2 3 3 3 4 접근법 sort를 이용하면 금방 풀리는 문제죠! 정렬 기준을 x좌표 y좌표 순으로 설정해준 뒤, 코드를 돌려주시면..
문제 설명 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 1.길이가 짧은 것부터 2.길이가 같으면 사전 순으로 제한 사항 -첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. -조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 입출력 예 input output 13 but i wont hesitate no more no more it cannot wait im yours im it no but more wait wont yours c..
문제 설명 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 제한 사항 -첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231..
문제 설명 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 제한 사항 -첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. -첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 입출력 예 input output 10 5 2 3 1 4 2 3 5 1 7 1 1 2 2 3 3 4 5 5 7 접근법 이번 문제는 수 정렬하기2 보다 메모리를 적게 사용해야합니다. 기존의 수 정렬하기 1,2 같은 경우에는 모든 수를 다 저장했었는데요, 최대 천만개의 수를 리스트에 다 저장해 버린다면, 8MB를 훌쩍 넘을 것 입니다. 여기서 계수 정렬의 원리 ..
문제 설명 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 제한 사항 -첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. -첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 입출력 예 input output 2143 4321 접근법 굉장히 간단합니다. 입력받은 수를 내림차순으로 정렬시킨 뒤, 문자열로 바꾸어 합쳐주면 됩니다. 1. 입력 받은 문자열을 문자 단위로 쪼개어 리스트를 생성 2. 생성된 리스트를 정수형으로 바꿔줌 3. 내림차순 정렬 4. 정수형 리스트를 문자 리스트로 바꿔줌 5. join을 이용하여 하나의 문자열 생성 1-4번을 아래 코드처럼 한 줄로 나타낼 수 있습니다. 나의 코드 nu..
문제 설명 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 제한 사항 -첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. -첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 입출력 예 input output 5 5 2 3 4 1 1 2 3 4 5 접근법 2750 수 정렬하기 문제와 똑같습니다. 하지만, 입력되는 수가 굉장히 많습니다. 따라서 시간 복잡도를 잘 고려하여 짜셔야 합니다. 1,000,000개의 입력을 가장 줄이기 위해서는 O(NlongN)의 시간 복잡도를 가지는 정렬을 이용해야합니다...
문제 설명 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게..
문제 설명 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 제한 사항 -첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. -첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 입출력 예 input output 5 5 2 3 4 1 1 2 3 4 5 접근법 정말 간단하게 풀려면 파이썬 내의 sorted함수를 이용하시면 됩니다. 하지만, 버블정렬, 퀵정렬, 합병정렬 등 다양한 정렬 방법을 이용해서 푸셔도 됩니다! ※ 파이썬 내의 sorted함수의 시간 복잡도는 얼마나 되나요? 파이썬 sorted함수는 O(nlo..
문제 설명 동혁이는 나무 조각을 5개 가지고 있다. 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다. 또, 모든 숫자는 다섯 조각 중 하나에만 쓰여 있다. 동혁이는 나무 조각을 다음과 같은 과정을 거쳐서 1, 2, 3, 4, 5 순서로 만들려고 한다. 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다. 처음 조각의 순서가 주어졌을 때, 위치를 바꿀 때 마다 조각의 순서를 출력하는 ..