본문 바로가기

Algorithm/백준(BOJ)111

[ 파이썬(python) ] 백준 1292 - 쉽게 푸는 문제 📍 백준 1292 - 쉽게 푸는 문제 백준 1292 - 쉽게 푸는 문제 ⚡️ 나의 풀이 문제 이름은 쉽게 푸는 문제였는데 나는 어렵게 푼 문제였다. 구간의 시작과 끝을 기준으로 구간 합을 구해야 하기 때문에 prefix_sum을 이용했다. 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 ... 수열을 만들 때 더 쉽게 떠올릴 수 있어야 하는데 str형으로 어렵게 푼 것 같다. 나의 풀이 arr에 0을 넣은 상태로 선언한다. (index 고려) a, b를 입력받는데 b는 index를 고려할 값이기 때문에 반복문의 범위를 반으로 줄였다. cnt는 1씩 증가하면서 똑같은 값이 하나씩 증가한다. 현재 항과 이전 항을 더해 누적 합을 계산해준다. arr[b] - arr[a-1]으로 구간 합을 구한다. 정답판정.. 2021. 6. 17.
[ 파이썬(python) ] 백준 10820 - 문자열 분석 📍 백준 10820 - 문자열 분석 백준 10820 - 문자열 분석 ⚡️ 나의 풀이 문자열 n개가 몇 번째까지인지 모르기 때문에 try except를 사용했다.(except EOFError) 소문자: islower(), 대문자: isupper(), 숫자: isdigit(), 공백: else 각 count누적 while True: try: lower_case, upper_case, number, blank = 0, 0, 0, 0 for i in input(): if i.islower(): lower_case += 1 elif i.isupper(): upper_case += 1 elif i.isdigit(): number += 1 else: blank += 1 print(lower_case, upper_ca.. 2021. 6. 17.
[ 파이썬(python) ] 백준 11723 - 집합 📍 백준 11723 - 집합 백준 11723 - 집합 ⚡️ 나의 풀이 add와 remove 조건에서 중복된 경우는 무시한다는 조건을 보아 set자료형을 사용했다. 그런데, 정답을 제출하니까 keyError가 떴었다 원인을 찾아보다가 remove 함수 때문이었는데, 값이 없는 경우에 remove를 사용하게 되면 keyError가 난다. 이럴 때는 discard함수를 사용하자. 값이 없는 상태에서 discard를 사용해도 에러가 나지 않는다. 또, empty는 빈 집합으로 바꿔야 하는데 그냥 set()으로 초기화해줘도 되지만 clear 함수를 사용해줘도 된다. 시간 복잡도는 크게 차이가 없었다. import sys input = sys.stdin.readline empty_set = set() def add.. 2021. 6. 16.
[ 파이썬(python) ] 백준 5086 - 배수와 약수 📍 백준 5086 - 배수와 약수 백준 5086 - 배수와 약수 ⚡️ 나의 풀이 배수와 약수의 관계를 파악하는 문제다. 기준을 너무 첫 번째 숫자로만 잡아서 생각이 고착되어있던 것 같다. 나의 풀이는 다음과 같다. 두 수를 대소비교한다. a b일 때는 a를 기준으로 약수를 구하고 b가 a의 약수와 같다면 배수(multiple)이고 반복문을 다 돌았는데도 찾지 못하면 neither이다. a == b인 경우는 없다. 이렇게 안 해도 다른 사람은 더욱 쉽게 구현했다. a % b == 0이면 a >= b이고 (이때, a != b), a는 b의 배수(multip.. 2021. 6. 16.
[ 파이썬(python) ] 백준 16935 - 배열 돌리기 3 📍 백준 16935 - 배열 돌리기 3 백준 16935 - 배열돌리기 3 ⚡️ 나의 풀이 2차원배열을 상하, 좌우, 시계 방향으로 90도 회전, 반시계 방향으로 90도 회전, 부분 배열 시계방향 회전, 부분 배열 반시계방향 회전 하는 문제다. 이 문제를 풀 때 indexError를 조심하자. 3번, 4번 연산에서는 반복문의 범위를 n, m을 서로 바꿔주었는데, n != m 일때 범위가 달라지기 때문이다. 그래서 temp 의 `n`, `m`도 서로 자리를 바꿔주었다. 주의할 점은 마지막에 oper를 실행시킬 때 n, m = m, n을 선언해줘서 가로, 세로가 바뀌지 않게 선언하자. 5번, 6번 연산은 조금 어려울 수 있는데 규칙을 알면 어렵지 않다.(규칙을 찾는 과정이 어렵긴 하지만..😅) 다음 사진을 보.. 2021. 6. 15.