전체 글 60

[백준/Python] 9012번: 괄호

📖 문제 링크 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 👩‍💻 문제풀이 문자열을 입력받고 짝을 맞춰주면 되는 문제이다. 본 문제에서는 각 괄호의 방향에 따라 sum에 +1과 -1을 해주었는데, 여기서 나는 조건을 하나 빠뜨려 계속 다른 결과가 나왔다. '괄호'는 말 그대로 '괄호'이기에, 꼭 ( ) 모양의 쌍으로 이뤄져야 하며, )( 이런식으로 전 후 모양이 바뀌면 안 된다. 그렇기에 그저 카운트를 올리고 ..

알고리즘/Python 2022.01.25

[백준/Python] 11655번: ROT13

📖 문제 링크 https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 👩‍💻 문제풀이 기본적인 문자열 + 알파벳 조합 문제이다. 아스키코드(소문자:97~122 / 대문자:65~90)를 사용해 m이하이면 13을 더해주고, m이상이면 13을 빼준다. 그리고 대소문자도 아닐때, 즉 공백일때 결과리스트에 추가하는 조건을 잊지 말아야한다. ✅ 최종 코드 word = list(input()) result = [] for i in word: if i.isupper() == True: if ord(i)+13

알고리즘/Python 2022.01.25

[백준/Python] 11652번: 카드

📖 문제 링크 https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 👩‍💻 문제풀이 10989 문제와 같이 입력될 배열을 모두 할당시켜놓은 후 해결하려 했다. 하지만 2의 62승이라는 어마어마한 숫자가 입력된다고 하니 위의 방법은 불가능했다. 이 문제는 파이썬의 Dictionary를 활용하는 문제였다. 카드번호를 key로 저장하고 해당 카드가 들어올때마다 value값을 1씩 증가시켜 카드의 개수를 저장하면 되는 간단한 방식이다. 모두 입력받았다..

알고리즘/Python 2022.01.25

[백준/Python] 10989번: 수 정렬하기 3

📖 문제 링크 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 👩‍💻 문제풀이 연습문제인가? 하며 아무 생각 없이 풀었던 문제...ㅎ 메모리 초과와 런타임 에러를 반복하며 당황하여 정답률을 보니 23%라는 낮은 비율을 보이고 있었다. 조건을 보니 메모리 제한이 고작 8MB였다. 수 정렬하기 2 (백준 2751번) 문제와 비교해 보니 현저히 작은 것을 알 수 있다. 이런 문제의 경우, 데이터의 입력 조건이 명확히 정해져 있고 반복되는 조건이 있다고 한다. 그래서 이..

알고리즘/Python 2022.01.24

[백준/Python] 10825번: 국영수

📖 문제 링크 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 👩‍💻 문제풀이 sort함수 활용 문제이다. 파이썬 sort함수는 정렬 기준을 key로 설정이 가능하다. 여기서 다중 조건일 경우, lambda식에 각 조건의 인덱스를 입력해준다. 내림차순일 경우 조건앞에 -를 붙여준다. ✅ 최종 코드 import sys n = int(input()) array = [] for i in range(n): name, ko, en,..

알고리즘/Python 2022.01.24

[백준/Python] 10814번: 나이순 정렬

📖 문제 링크 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 👩‍💻 문제풀이 sort함수의 조건문에 대해 깊이 공부하지않아 처음 풀이는 굉장히 비효율적인 방식으로 풀게되었다. 정답은 맞췄지만, 다른분들의 풀이를 보며 sort함수의 key와 lambda 식을 활용해 재풀이하였다. ✅ 최종 코드 import sys n = int(input()) array = [] for i in range(n): age, name = sys.stdin.readline..

알고리즘/Python 2022.01.24

[백준/Python] 11651번: 좌표 정렬하기 2

📖 문제 링크 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 👩‍💻 문제풀이 11650번 문제와 같다. 대신 y좌표 순으로 정렬한다는 것! 입력받은 x, y 좌표를 y가 앞으로 오도록 배열에 추가하고, sort함수로 정렬하였다. 출력은 y, x좌표로 입력된 배열을 x, y순서로 인덱스를 바꿔 출력하면 된다. ✅ 최종 코드 import sys n = int(input()) array = ..

알고리즘/Python 2022.01.24

[백준/Python] 11650번: 좌표 정렬하기

📖 문제 링크 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 👩‍💻 문제풀이 앞서 2751번과 마찬가지로 파이썬 sort함수를 사용하여 풀었다. 이차원 배열 또한 sort함수를 사용하여 정렬이 가능하다. sys 라이브러리 사용으로 입력 속도를 빠르게 하였다. ✅ 최종 코드 import sys n = int(sys.stdin.readline()) array = [] for i in range..

알고리즘/Python 2022.01.23

[백준/Python] 2751번: 수 정렬하기 2

📖 문제 링크 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 👩‍💻 문제풀이 정석 병합 정렬(MergeSort) 알고리즘을 구현하여 파이썬으로 제출했으나 시간 초과가 되었다. 그래서 input을 sys 라이브러리를 불러와 구현했지만 그래도 시간초과! 검색해보니 PyPy3로 제출하라는 말이 있어 시도해보았더니 빠르진 않았지만 통과가 되었다. sort함수로 구현한 코드는 Python 병합정렬 제출과 비슷한 속도가 나왔고, PyPy3에서..

알고리즘/Python 2022.01.23

[백준/Python] 2011 암호코드

📖 문제 링크 https://www.acmicpc.net/problem/2011 2011번: 암호코드 나올 수 있는 해석의 가짓수를 구하시오. 정답이 매우 클 수 있으므로, 1000000으로 나눈 나머지를 출력한다. 암호가 잘못되어 암호를 해석할 수 없는 경우에는 0을 출력한다. www.acmicpc.net 👩‍💻 문제풀이 DP문제 로드맵의 거의 마지막 문제인데 도저히 규칙도 안 찾아져서...^^ 이러한 유형의 문제를 익힌다는 생각으로 아래의 블로그를 따라 작성하였다. https://archive-me-0329.tistory.com/23?category=965963 백준 2011 파이썬 https://www.acmicpc.net/problem/2011 2011번: 암호코드 나올 수 있는 해석의 가짓수를 ..

알고리즘/Python 2022.01.23