반응형

Algorithm/백준 212

[백준 알고리즘] 16120번: PPAP (Python)

https://www.acmicpc.net/problem/16120 16120번: PPAP 첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다. www.acmicpc.net 소스코드 풀이 그리디 알고리즘 분류를 보다가 제목이 재밌어서 한번 풀어봤슴당 ! 처음엔 스택을 사용할 생각을 하지 않았고, 알파벳이 나오는 순서에 따라 PPAP를 치환해주는 식의 방법으로 문제를 해결하려고 했습니다. 근데 생각보다 시간 초과가 계속 떠서 구글링을 해보니, 다들 스택으로 푸셨더라구요 ! 처음 생각해봤던 방법은 계속해서 연구해볼 생각입니당 ! 제가 생각하는 문제의 핵심은 PPAP가 P와 동일하다는 것입니다 ! 처음엔 PPAP를 발견하면..

Algorithm/백준 2023.03.28

[백준 알고리즘] 10812번: 바구니 순서 바꾸기 (Python)

https://www.acmicpc.net/problem/10812 10812번: 바구니 순서 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2 www.acmicpc.net 소스코드 풀이 리스트의 슬라이싱 기능을 활용하면 금방 풀 수 있는 문제입니다. 저는 범위 값 안에 있는 리스트를 mid를 기준으로 두개로 나눴고, 순서를 바꿔서 '+' 해줬습니다 여기서 주의할 점은 리스트의 인덱스는 0부터 시작한다는 점입니다 ! 그래서 숫자 1을 사용하기 위해선 '리스트[0]'를 해줘야 합니당 ㅎㅎ

Algorithm/백준 2023.03.28

[백준 알고리즘] 10988번: 팰린드롬인지 확인하기 (Python)

https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 소스코드 풀이 단어를 앞으로 읽었을 때와 거꾸로 읽었을 때가 똑같은 경우를 찾는 일반적인 팰린드롬 문제입니다. 하지만 여기서 주의해야 할 점은 input으로 받는 입력 값입니다. 저 같은 경우에는 sys 모듈을 import 하여 입력 값을 받는데 'sys.stdin.readline()' 구문은 자동으로 줄바꿈('\n')이 추가되는 성질이 있습니다. (일반 input()과는 다름) 그렇기에 뒤에 strip() 함수를 사용하여 공백을 제거해줘야 합니다. ..

Algorithm/백준 2023.03.28

[백준 알고리즘] 25206번: 너의 평점은 (Python)

https://www.acmicpc.net/problem/25206 25206번: 너의 평점은 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치 www.acmicpc.net 소스코드 풀이 if ~ else 문을 사용해서 풀 수도 있는 문제이지만 그럼 코드의 가독성도 떨어지고 복잡하게 됩니다 ! 그래서 딕셔너리를 사용하는 것을 추천드립니다. 평점을 딕셔너리로 만들고, 입력 값의 등급이 P가 아니라면 score 변수에 학점과 평점을 곱한 값을 더해주고, credits 변수에는 학점을 더해줍니다. 반복문을 다 돈 후에는 score를 credits으로 나눠줘서 값을 구하면 됩니다..

Algorithm/백준 2023.03.28

[백준 알고리즘] 2941번: 크로아티아 알파벳 (Python)

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 소스코드 풀이 파이썬 함수 중 하나인 replace를 사용하여 풀면 간단하게 풀 수 있습니다. word 리스트에 문자들을 넣어두고, 입력 값으로 받은 문자에 word에 속한 문자가 들어있으면, 그 문자는 'a'로 변경해줍니다. 그러면 입력 값으로 받은 문자 중 word에 들어있는 문자는 'a'로, 들어있지 않은 알파벳은 그대로 남아있게 됩니다. 이 문자열의 길..

Algorithm/백준 2023.03.28

[백준 알고리즘] 11718번: 그대로 출력하기 (Python)

https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시 www.acmicpc.net 소스코드 풀이 문제만 읽었을 때는 쉽게 풀 수 있겠다고 생각했지만, 입력 값을 몇번 받는지 정해지지 않은 경우, 어떻게 반복문을 빠져나올 지에 대해 생각해봐야 했습니당 ! try ~ except 구문 없이 출력을 돌리면 런타임 에러(EOFError)가 발생하게 됩니다. 런타임 에러를 해결하기 위해 try ~ except 구문을 통해 입력 값이 있을 경우엔 그 값을 그대로 출력해주..

Algorithm/백준 2023.03.24

[백준 알고리즘] 1744번: 수 묶기 (Python)

https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 소스코드 풀이 최적의 해를 구하는 그리디 알고리즘 문제이며, 입력으로 받는 수들을 양수, 음수, 0, 1로 나눠서 어떻게 연산을 해줄지에 대해 생각해야 하는 문제입니다. 1. 양수는 큰 수부터 두개씩 곱해야지만 가장 큰 수가 나온다 ( 정렬 시 내림차순 정렬) ex) 5,4,3,2,1 2. 음수는 작은 수부터 두개씩 곱해야지만 가장 큰 수가 나온다 ( 정렬 시 오름차순 정렬) ex) -5,-4,..

Algorithm/백준 2023.03.23

[백준 알고리즘] 1316번: 그룹 단어 체커 (Python)

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 소스코드 풀이 1.리스트를 만들어 확인하려고 하는 문자가 이미 리스트에 들어가 있는지, 2. 확인하려고 하는 문자가 바로 이전문자와 같지 않은지 이 두가지를 비교할 수 있다면 어렵지 않게 풀 수 있는 문제입니다. 'for i in words:'에서 입력받은 문자의 알파벳을 하나씩 읽고, 읽은 문자가 위의 1번과 2번에 모두 성립한다면 그 단어는 그룹 단어가 아니기 ..

Algorithm/백준 2023.03.22

[백준 알고리즘] 1181번: 단어 정렬 (Python)

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 소스코드 풀이 단순 문자열 문제입니다 ! sort() 함수로 배열하는 것만 잘하면 쉽게 풀 수 이써영 입력 받을 때 sys 모듈 사용해서 받으면 시간을 많이 단축시킬 수 있음 ! 하나 유의해야 할 점은 문자열을 for 문에서 받을 때는 strip() 함수를 통해 공백 제거를 해줘야 합니당 중복을 제거하기 위해 리스트 a를 set 자료구조로 변경 해줌 ! set은 중복을 허용하지 않는 집..

Algorithm/백준 2023.03.21

[백준 알고리즘] 1158번: 요세푸스 문제 (Python)

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 소스코드 풀이 자료구조 중 하나인 Queue(큐)를 사용하면 어렵지않게 해결할 수 있는 문제입니다. 기본적으로 큐는 FIFO(First in First out, 선입선출) 성격을 가지고 있습니다. 이러한 성질을 활용하여 배열을 앞에서부터 순서대로 제거해줄 수 있습니다. 파이썬에서 큐를 사용하기 위해서는 'from collections import deque'로 큐를 임포트해줘야 합니다. n까지의 입력받은 배열을 '큐' 자료구조인 a 저장해줍니다. ans 리스트는 문제의 정답인 제거되는 사..

Algorithm/백준 2023.03.21
반응형