https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 업로드하지 않은 정렬 알고리즘이 생각나서 다시 정렬로 회귀. 이상하게 실제 문제에서는 배운 알고리즘들을 쓸 기회도 없이 sort() 함수를 쓰게 되는 것 같다. 이러다 망각하면 억울할 것 같은데... 5052는 언젠가 프로그래머스에서 마주친 듯한 문제다. 골드4에 랭크되어 있어서 살짝 겁을 먹고 풀었지만, 알고 보니 은근 골드급 문제를 많이 풀어왔더라. 결론적으로 이문제는 ..
https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net output이해를 잘못해서 조금 돌아갔지만, 결과값 s가 아닌 새로이 벼열한 리스트를 return하는 방식의 문제 또한 충분히 좋았을 것 같다. color scripter를 이용해서 코드를 업로드하고 있었는데, 불규칙적으로 사이즈가 커지거나, 정렬 오류가 발생하는 경우가 종종 생겨서 다른 방식의 필요성을 느꼈다. html을 미약하게 공부한 상태라 자신감이 붙어서, 구글링으로 검색한 블로그들..
https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이는 역시나 단순하다. 백준 저지에서 solved.ac 설정을 수정하면 문제별로 난이도가 표시되는데, 실버 수준의 문제들은 사실 그렇게 어렵게 느껴지지는 않는 것 같다. 문제는 시간 복잡도다. 문제에서 제한한 조건에 따라서 어떻게 풀지를 설계해야 하는데, 그 해석이 잘 안돼서 구현은 가능하지만 이 풀이가 문제가 요구하는 바에 부합하는지 판단을 내리는 게 조금 까다롭다. 해야지, 해야지 생각은 하는데 ..
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 정렬 알고리즘이긴 하지만, sort 함수의 쓰임새에 조금 더 치중된 문항이다. 이 문제를 푸는데 필요한 역량은, 1) sort함수의 문자열 정렬 기능을 알고 있는가 2) sort함수의 key기능을 알고 있는가 3) sort함수를 여러 번 사용한 경험이 있는가 정도가 될 수 있을 것 같다. 1, 2는 파이썬 기초 문법을 공부할 때 접한 기억이 있어서 자세히는 아니어도 무의식 속에 알고 있..
https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 이번에 사용한 정렬 알고리즘은 퀵정렬이다. 사실 어떤 정렬 알고리즘의 효율이 더 좋은지는 아직 시간 복잡도에 대한 이해가 부족하여 잘 모르겠지만, 우선은 다양한 알고리즘들을 실제로 사용해보는 것도 좋지 않을까라는 것에 의의를 두기로 한다. 보통의 정렬 알고리즘과 달리 이 문제는 내림차순을 요구하기 때문에 일반적인 풀이와는 미묘하게 다르다. 어느 부분을 수정해야하는지 사고하는 것도 의외로 단순하지만 재밌는 경험이었다. # PYTHON CODE 1 2 3 4 5 6 7 8 9 10 11 ..
https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 버블, 단순 선택, 단순 삽입, 셸, 퀵, 병합, 힙 중에 병합 정렬이나 힙 정렬로만 풀리는 시간 복잡도를 갖는 문제다. 퀵 정렬의 경우 꽤 빠른 정렬이기는 하지만, 배열의 종류에 따라서 그 기능이 천차만별이기 때문에 사용에 주의를 해야 한다고 한다. 병합 정렬은 재귀적인 부분에서 이해가 잘 가지 않아서 잠깐 막혔지만, 몇 가지 케이스를 따라가다 보면 이해가 될 수밖에 없는 재귀 알고리..