본문 바로가기

구현63

[ 파이썬(python) ] 백준 6359 - 만취한 상범 📍 백준 6359 - 만취한 상범 백준 6359 - 만취한 상범 ⚡️ 나의 풀이 언뜻 보면 저번에 풀었던 백준 1244 - 스위치 켜고 끄기문제와 비슷한데, 범위 전체를 살펴보면서 상태를 바꾼다는 점이 조금 다르다. (1244 문제는 주어진 n의 배수만 상태를 바꾸면 됐음) 주어진 문제 그대로 구현하다보니까 생각을 잘 못했는데 1 ~ 2 라운드도 3 ~ k 라운드와 마찬가지로 열려있으면 잠그고, 잠겨있다면 여는 방법을 사용해도 답은 같게 나온다. 1, 0 상태를 바꿀 때 🍯 tip인데 if not gate[j]: gate[j] = 1 or if gate[j]: gate[j] = 0 대신 gate[j] = (gate[j] + 1) % 2를 사용해도 결과는 같지만 코드는 훨씬 간결해진다. 이전 에 공부한 내.. 2021. 6. 18.
[ 파이썬(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) ] 백준 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.