알고리즘 풀이/백준 224

[백준 2309] 일곱 난쟁이

문제 9명의 난쟁이가 있다. 백설공주는 일곱 난쟁이 키의 합이 100이라는 것을 통해 9명 중 진짜 일곱 난쟁이를 판단하려고 한다. 입력 9개의 정수를 입력한다. 출력 조건에 맞는 7개의 키를 오름차순으로 출력한다. 처음 이 문제를 보고 바로 7개의 경우의 수를 구하여 합을 비교하는 식으로 구성을 했다. 하지만 입력받은 9개의 키를 모두 더하고 2개만 빼서 100이 되는지 확인하면 되는 것을 알았다. 1. 입력받은 키를 정렬한 뒤에 모두 합한다. 2. 이중 for문을 통해 2개의 키를 선택해 키의 합에서 뺀다. 3. 2번의 결과가 100이라면 두 개의 키를 리스트에서 제거한다. ==> 이때 if문 안에 바로 인덱스를 활용해 remove()를 실행했다. 하지만 첫 번째 remove()가 실행되면 인덱스가 ..

[백준 2789] 블랙잭

문제 정수가 적혀있는 n개의 카드 중 3장을 골라서 더했을 때 m이하의 값 중 최댓값을 출력한다. 입력 카드의 개수 n과 합 m을 입력 후에 n개의 카드에 적혀있는 정수를 입력한다. 출력 m이하의 수 중 최댓값을 출력한다. n은 3이상 100이하라는 조건이 있다. n개의 카드 중 중복없이 3장의 카드를 선택해야하기 때문에 최대 100 x 99 x 98 = 970,200의 경우의 수가 나온다. 따라서 충분히 모든 경우의 수를 고려할 수 있기 때문에 완전탐색을 통해 풀어본다. 1. 3개의 for문을 통해 3장의 카드를 선택하는 경우의 수를 조합한다. 2. 이때 중복을 제거하기 위해 각각의 range()를 다르게했다. 3. 마지막 for문에서 선택한 인덱스의 수를 모두 더한다. 4. 현재 최댓값보다 크고 m이..

[백준 1152] 단어의 개수

문제 영어 대소문자와 띄어쓰기로만 이루어진 문자열이 있을 때 몇 개의 단어로 이루어져있는지 출력한다. 입력 The Curious Case of Benjamin Button 출력 6 1. 입력받은 문자열을 공백을 기준으로 리스트에 저장한다. 2. 리스트에서 공백을 제외한 문자를 카운트한다. 나의 풀이 test=input() word_list=test.split(' ') count=0 for w in word_list: if w=='': continue else: count+=1 print(count) 다른사람의 풀이 - split()으로 공백을 기준으로 나눠서 리스트에 추가할 때 공백은 추가되지 않는다. text=input().split() print(len(text))

[백준 1157] 단어 공부

문제 대소문자로 이루어진 영단어 중 가장 많이 나온 알파벳을 찾는다. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 대소문자로 이루어진 문자가 입력된다. 출력 가장 많이 나온 문자의 대문자를 출력하고 동점이 발생했을 때는 ?를 출력한다. 1. 입력된 문자열 중에 알파벳의 개수를 담을 리스트를 선언한다. 2. for문을 통해 검사하여 문자를 ord()로 숫자로 변환하여 리스트에서 해당 인덱스의 수를 증가시킨다. 3. 리스트 내의 최댓값을 찾는다. 4. 최댓값이 2개이상이면 ?를 출력한다. 5. 그렇지 않다면 최댓값에 해당하는 문자의 대문자를 출력한다. 나의 풀이 test=input() alphabet=[0 for _ in range(26)] for c in test: if c.islower():..

728x90
반응형