본문 바로가기

Algorithm272

[ 파이썬(python) ] 백준 2309 - 일곱 난쟁이 📍 백준 2309 - 일곱 난쟁이 백준 2309 - 일곱 난쟁이 ⚡️ 나의 풀이 브루트 포스(brute force)유형 문제인데 핵심은 다음과 같다. 아홉 난쟁이의 키는 모두 다르지만 그중 일곱 난쟁이의 크기의 합은 100이 된다. 즉, sum(arr) - (난쟁이1 + 난쟁이2) == 100과 같은 말이다. 그런데 몇 번 난쟁이가 들어가야 할지 모르기 때문에 모든 경우의 수를 찾아야한다. sum(arr) - (arr[i] + arr[j]) == 100이 되면 해당 난쟁이를 새로운 변수로 넣어두고 마지막에 arr에서 제거한다. sum(arr) - (arr[i] + arr[j]) == 100이 되면 반복문을 한번 더 선언하고 해당 난쟁이를 제외하고 출력 후 exit()로 빠져나온다. break문을 사용하게.. 2021. 5. 26.
[ 파이썬(python) ] 백준 20291 - 파일 정리 📍 백준 20291 - 파일 정리 백준 20291 - 파일 정리 ⚡️ 나의 풀이 확장자 뒤의 값만 담을 defaultdict 변수를 선언한다. 공백을 기준으로 분리(split())한다. 동일한 확장자(split()[1])가 입력으로 들어오면 defaultdict에 1씩 더한다. dic.items()를 sorted한다. ' '.join을 사용하여 출력한다. from collections import defaultdict import sys input = sys.stdin.readline n = int(input()) dic = defaultdict(int) for _ in range(n): file = input().rstrip().split('.')[1] dic[file] += 1 for i in sor.. 2021. 5. 24.
[ 파이썬(python) ] 백준 9093 - 단어 뒤집기 📍 백준 9093 - 단어 뒤집기 문제: 백준 9093 - 단어 뒤집기 💡 나의 풀이 입력 전체를 뒤집는 것이 아니고 공백을 기준으로 나누고 해당 단어만 뒤집어서 출력하는 문제다. 반복문을 선언하여 i[::-1]를 사용하는 방법과 lambda 를 사용해서 뒤집는 방법 총 2가지로 나누어서 풀었다. import sys input = sys.stdin.readline T = int(input()) # 반복문 선언 for _ in range(T): result = ' '.join([i[::-1] for i in input().split()]) print(result) # 람다 함수 선언 for _ in range(T): print(' '.join(map(lambda x: x[::-1], input().spli.. 2021. 5. 24.
[ 파이썬(python) ] 백준 1018 - 체스판 다시 칠하기 📍 백준 1018 - 체스판 다시 칠하기 백준 1018 - 체스판 다시 칠하기 ⚡️ 나의 풀이 이 문제에서 고민해야 할 부분은 크게 다음과 같이 나뉜다. 좌측 상단이 B / W부터 시작하는 체스판을 만든다. (이때, 번갈아가면서 색칠되어있어야 함.) N * M 크기의 보드를 입력받는다. (이때, N은 세로, M은 가로) N * M 크기의 보드를 8 * 8형태로 자르고, 1번에서 작성한 두 개의 체스판의 좌표를 서로 비교한다. 좌표의 값이 서로 다르면 cnt를 증가하는데, 더 작은 값을 return 한다. 1번 방법을 좌표가 나타내는 일정한 규칙으로 구현하지 않고 내 방식대로 구현하다가 시간을 다 까먹고 구현을 하지도 못했다. 😭 😭 W가 먼저 시작하는 체스판을 만들 때 좌표를 보면 다음과 같은 규칙이 있.. 2021. 5. 24.
[ 파이썬(python) ] 백준 1436 - 영화감독 숌 📍 백준 1436 - 영화감독 숌 백준 1436 - 영화감독 숌 ⚡️ 나의 풀이 전형적인 브루트포스문제다. 6이 적어도 3개 이상 등장해야 한다. number+=1씩 증가하면서 666이 있는지 확인한다. number가 있으면, result에 추가시킨다. 코드를 작성하고 나니까 굳이 result에 추가시키지 않아도 된다는 생각을 했다. 그리고 while문 종료 조건이 가독성이 떨어져 보여서 직접 작성하지 말고 flag로 대체해야겠다는 생각을 했다. # 나의 풀이 n = int(input()) number = 665 result = [] while not len(result) >= n: if str(number).count('666') >= 1: result.append(number) number+=1 pr.. 2021. 5. 22.