반응형

전체 글 366

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

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

[백준 알고리즘] 1026번: 보물 (Python)

https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 알고리즘을 알지 못해도 풀 수 있는 문제라고 생각하지만, 백준 사이트의 알로리즘 분류에는 '그리디 알고리즘'으로 분류되어 있습니다. 그리디 알고리즘이란 매 순간 최적의 선택을 하여 문제를 풀어나가는 기법입니다. 소스 코드 풀이 파이썬에는 다른 언어들과 다르게 다양한 함수를 활용할 수 있습니다. 이 문제에서는 remove(), min(), max() 함수를 활용하였습니다. min() 함수는 ..

Algorithm/백준 2023.03.16
반응형