본문 바로가기

728x90

정렬

[백준알고리즘] 2751번: 수 정렬하기 2 -C++ [백준알고리즘] 2751번: 수 정렬하기 2 -C++ 2751번: 수 정렬하기 2 (acmicpc.net) 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 와... 정말 많은 코드를 내서 겨우 통과했다... 그런데 알고 봤더니 로직은 다 맞았었다... 후... 오늘도 이렇게 삽질로 배웠다..! 그리고 특이한 점을 또 발견했다!! 우선, 예전에 파이썬으로 풀었던 풀이에 대한 링크다. 이때 역시 거만하군ㅋ 역시 간단하게 풀어놓기도 했다.. [백준알고리즘] 2751번: 수 정렬하기 2 -Python (.. 더보기
[백준알고리즘] 2252번: 줄 세우기 -Python [백준알고리즘] 2252번: 줄 세우기 -Python https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이다. 학생들의 번호는 1번부터 N번이다. www.acmicpc.net directed graph에서 tree를 만들면 되는 것 같다. 근데 정답비율을 보고 좀 의아했다. 이렇게 쉬운 문제인가..? 아무튼 생각이 안 나서 나는 찾아보고 풀었다. 통과한 코드는 위상 정렬을 사용한 방법이다. 위상 정렬에 대해서는 아래의 글을 참고했다. https:.. 더보기
[백준알고리즘] 1517번: 버블 소트 -Python [백준알고리즘] 1517번: 버블 소트 -Python https://www.acmicpc.net/problem/1517 1517번: 버블 소트 첫째 줄에 N(1≤N≤500,000)이 주어진다. 다음 줄에는 N개의 정수로 A[1], A[2], …, A[N]이 주어진다. 각각의 A[i]는 0≤|A[i]|≤1,000,000,000의 범위에 들어있다. www.acmicpc.net 당연히 일반적인 방법으로 문제를 해결할 경우 시간 초과가 발생할 것이란 것을 알고 있었다. 그런데 그거 외에는 방법을 모르겠어서.. 각각의 값마다 앞의 인덱스에서 자신보다 큰 값의 개수를 새는 것까지는 생각했는데 결국 O(N^2)을 벗어날 수 없었다. # 여기서 앞에 존재하는 큰 값의 개수를 세는, 역순으로 존재하는 수의 개수를 찾는 .. 더보기
[백준알고리즘] 2751번: 수 정렬하기 2 -Python [백준알고리즘] 2751번: 수 정렬하기 2 -Python https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 간단한 정렬문제이다. 실패로 떠있어서 이전 코드들을 보니까 이 문제가 뭐라고 그렇게 창의적으로 코딩을 했었는지 모르겠다. ㅋㅋㅋㅋ 주어진 수만큼 서로 다른 정수들을 입력받아 내림차순으로 출력하면 되는 문제이다. 다른 건 확인할 필요가 없는 것 같고 arr.sort()와 sorted(arr)의 차이만 살펴보면 될 것 같다. 가장.. 더보기

728x90