반응형

분류 전체보기 368

[백준 알고리즘] 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

[백준 알고리즘] 1110번: 더하기 사이클 (Python)

https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 소스코드 풀이 처음 문제를 읽었을 때 입력 받은 수를 어떻게 나눠서 더해줘야 할지 고민할 수도 있습니다 ! 이 문제와 같은 경우에는 입력 수를 10으로 나눈 몫과 10으로 나눈 나머지를 활용하여 연산을 할 수 있습니다. 이러한 연산으로 나온 결과 + 입력 받은 수의 일의 자리를 십의 자리로 더해주면 한번의 과정이 끝나게 됩니다 ! 이러한 과정을 무한 반복하여 만드는 값이 입력 값과 ..

카테고리 없음 2023.03.23

[백준 알고리즘] 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

[백준 알고리즘] 1339번: 단어 수학 (Python)

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 백준 사이트의 알고리즘 분류 중, 그리드 알고리즘과 백트레킹 알고리즘에 분류되어 있는 문제입니다 ! 처음 문제를 풀 때, 단순 자릿수가 큰 문자에 9부터 숫자를 넣어주는 방법으로 풀려고 했지만 반례가 존재하였고 그 후에 어려움을 좀 겪은 거 같아요 ㅠ 힌트를 얻으려고 다른 분들의 코드를 살펴봤는데 대부분의 코드들이 딕셔너리를 이용한 코드였습니다. 저는 딕셔너리 자료구조를 사용하는 것을 별로 ..

카테고리 없음 2023.03.21

[백준 알고리즘] 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
반응형