본문 바로가기

Algorithm/백준(BOJ)111

[ 파이썬(python) ] 백준 2480 - 주사위 세개 📍 백준 2480 - 주사위 세개 백준 2480 - 주사위 세개 💡 나의 풀이 이 문제의 핵심은 같은 눈이 몇 개가 나왔는지 분류를 하는 작업이다. 내가 풀었던 방법은 set의 특징 중 중복 제거를 이용했는데 주사위를 더 많이 던질 때 사용하면 괜찮은 방법인 것 같다. 다시 본론으로 돌아가 len(set(arr)) == 1이면 모든 수가 같은 수이기 때문에 1개로 줄어든 것이다. 따라서 같은 눈이 3개라고 할 수 있다. 반대로 len(set(arr)) == 3이면 모두 다르기 때문에 중복제거가 일어나지 않았다. 이제 나머지 조건인 같은 눈이 2개만 나오는 경우를 찾으면 되는데 set으로 찾을 방법이 떠오르지 않아 반복문 + count + index를 이용했고 count가 2개 이상인 index를 찾아 a.. 2021. 6. 8.
[ 파이썬(python) ] 백준 2010 - 플러그 📍 백준 2010 - 플러그 백준 2010 - 플러그 💡 나의 풀이 처음 문제 풀 때 각각 멀티탭을 꽂을 수 있는 개수만큼 max값만 갱신하면 되는 거 아냐?라고 생각했는데 그게 아니었다. 멀티탭에 또 멀티탭을 꽂을 수 있다는 사실을 잊었다. 나처럼 잘 이해가 안 되는 사람들을 위해 그림을 하나 그려봤다. (발(🦶🏾) 그림 주의) 예를 들어 입력이 4 4 3 2 1 이라고 가정해보자. 벽 단자는 그림의 이해를 위해서 그린 것이고 멀티탭만 보면 된다. 이미 꽂혀 있는 멀티탭을 제외하고 남은 멀티탭에서 최대 개수를 구할 때 규칙을 찾아보면 각각의 멀티탭은 무조건 하나씩은 꽂혀있기 때문에 총 멀티탭에서 꽂을 수 있는 구멍 - (멀티탭의 수 - 1)가 된다. 그래도 이해가 잘 안 되면 그림을 다시 한번 살펴보자.. 2021. 6. 8.
[ 파이썬(python) ] 백준 1085 - 직사각형에서 탈출 📍 백준 1085 - 직사각형에서 탈출 백준 1085 - 직사각형에서 탈출 💡 나의 풀이 직사각형의 경계선까지 이동하면 되는데, 결론적으로 경계선( w 혹은 h)에 더 가까운 수를 구하면 된다. 또한 직사각형이기 때문에 대각선은 고려하지 않는다. 나의 코드에서 b의 min(x-0, y-0)은 min(x, y)와 동일하지만 사고 흐름을 남겨놓고 싶어 0을 붙였다. 더욱 간결하게 작성하려면 다른 사람의 코드를 참고하자. # 나의 코드 x, y, w, h = map(int, input().split()) a = min(w - x, h - y) b = min(x - 0, y - 0) print(min(a, b)) # 다른사람의 코드 x, y, w, h = map(int, input().split()) print.. 2021. 6. 8.
[ 파이썬(python) ] 백준 3047 - ABC 📍 백준 3047 - ABC 백준 3047 - ABC ⚡️ 나의 풀이 문제 따라 대소관계를 비교하면 C > B > A가 된다. 그런데, 입력에서 주어진 순서대로 출력해야하므로 반복문 + 조건문을 사용하여 출력했다. # 나의 코드 arr = list(map(int, input().split())) arr.sort() A, B, C = arr for i in input(): if i == 'A': print(A, end=' ') elif i == 'B': print(B, end=' ') else: print(C, end=' ') # 나의 다른 코드 arr = list(map(int, input().split())) A = min(arr) C = max(arr) arr.remove(A) arr.remove(C.. 2021. 6. 7.
[ 파이썬(python) ] 백준 1076 - 저항 📍 백준 1076 - 저항 백준 1076 - 저항 ⚡️ 나의 풀이 저항 문제의 핵심은 첫 번째와 두 번째 색은 더해주고 마지막 색은 곱해주는 방법인데, 무작정 str형으로 바꿔 더해주는 방법만 생각했다. 그것보다 첫 번째 색에 10을 곱하고 두 번째 색은 그대로 더해주는 게 가독성이 더 좋았다. 그리고 10의 거듭제곱을 이용하면 쉽게 계산 할 수 있는데 규칙을 파악하지 못해 resisters[color][2]에 무작정 10의 거듭제곱을 넣었다. 다른 사람의 코드를 보니까 규칙의 중요성을 한번 더 느꼈다. # 나의 코드 colors = [input() for _ in range(3)] resisters = {'black': [0, 1], 'brown': [1, 10], 'red': [2, 100], 'or.. 2021. 6. 7.