목록알고리즘 (56)
DATA101
📚 문제 링크: https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 💡 접근법 소요시간이 가장 적은 사람을 맨 앞 순서로 보내면 해결이 가능합니다. N명의 ATM 이용 총 시간은 각 사람마다 기다리는 시간과 소요 시간을 합한 값들을 합계하면 됩니다. 즉, 첫 번째 사람은 p1 시간이 소요되고, 두 번째 사람은 p1 + p2, ... N번째 사람은 p1 + p2 + ... pN이 소요됩니다. 따라서 N명이 모두 ATM을 이용하는 데 필요한 시간을 수식으로 나타내면 "p1*N + ..
📚 문제 링크: https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시 www.acmicpc.net 💡 접근법 문제에서는 입력을 받을 문자열 개수나 입력 명령어를 끝내는 조건이 따로 주어지지 않았죠. 그럼에도 우리는 프로그램이 알아서 똑똑하게 입력받는 작업을 멈춰주길 바랍니다. 이러한 경우에는 try ~ except 구문을 활용하여 쉽게 해결할 수 있습니다. 즉, 무한 반복문에서 문자열을 끊임없이 입력받는 작업을 try 구문 안에 입력하고, 문자열을 입력받지 않..
📚 문제 링크: https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 💡 접근법 본 문제 풀이에 있어서는 2가지를 체크하는 것이 가장 중요합니다. ✅ 첫째, 단어 내 어떤 알파벳의 기(旣, already) 등장여부 ✅ 둘째, 단어 내 어떤 알파벳 이전 알파벳과 같은지 여부 즉, 그룹 단어란 어떤 알파벳이 최초로 한 번만 등장했거나 2번 이상 등장할 경우 연속해서 등장해야만 합니다. 이 점만 유념하시면 쉽게 문제를 푸실..
📚 문제 링크: https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 💡 접근법 입력받은 문자열(string) 기반 숫자를 반복문을 통해 인덱싱하여 리스트 원소로 만든 후, sorted 함수로 리스트를 내림차순 정렬하고 join 함수로 리스트 원소를 모두 이어붙인 문자열로 반환하여 해결하였습니다. 💻 코드 # https://www.acmicpc.net/problem/1427 print("".join(sorted([number for number in input()], reverse=True))) ✅ 정답 확인 👨💻 파이썬 파일(Gith..
📚 문제 링크: https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 💡 접근법 문자열 내 알파벳별 출현 횟수를 카운트하기 위해 파이썬 collections 라이브러리 내 Counter 모듈을 활용하였습니다. 최다 빈출 알파벳을 추출하기 위해 Counter 모듈에서 most_commons 함수를 활용하였습니다. 출현 횟수가 공동 1위인 알파벳이 있을 경우를 처리하기 위해 출현 빈도 1위와 2위를 비교하였습니다. 💻 코드 # https://www.acmicpc.net/problem/1..
📚 문제 링크: https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 💡 접근법 입력받는 단어의 좌측부터 알파벳부터 차례로 접근하여 몇 번째 알파벳인지 확인하여 정답으로 출력할 리스트를 업데이트하면 됩니다. 저는 a부터 z까지 모든 소문자 알파벳을 문자열로 받아오기 위해 파이썬 string 라이브러리 내 ascii_lowercase 함수를 활용하였습니다. 그리고, 문자열 탐색 결과를 저장할 리스트 원소는 모두 -1로 초기화하였습니다. 입..
📚 문제 링크: https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 💡 접근법 파이썬의 문자열 split 함수를 통해 공백 구분자를 기준으로 문장을 단어 단위로 나눈 리스트를 만들어 준 후, 해당 리스트의 길이를 출력하면 쉽게 해결할 수 있습니다. 💻 코드 print(len(input().split())) 포스팅 내용에 오류가 있거나 조언/지적/피드백 환영입니다!😄 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다. 그럼 오늘도 즐겁고 건강한 하..
📚 문제 링크: https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 💡 접근법 문자열은 반복문을 통해 차례로 인덱싱할 수 있다는 점에, 자릿수마다 숫자를 정수형으로 변환한 값을 차례로 합하면 쉽게 해결이 가능합니다. 💻 코드 def main(): n = int(input()) # 문자열 개수 n_total = input() # 숫자 N개 문자열로 입력 answer = 0 for number in n_total: answer+= int(number) print(answer) if __name__ == "__main__": main(..