본문 바로가기

전체 글400

슬라이딩 윈도우 두 개의 포인트로 범위를 지정한 다음 범위를 유지한 채로 이동하며 값을 구하는 방법! 투 포인터의 확장 개념이라고 이해하면 좋을 듯! 범위는 고정된 채로 이동할 때 마다 해당하는 값에서 더해지고 빠지는 과정을 통해서 값을 구하는 방법!! 그림으로 표현하면 아래와 같다. 슬라이딩 윈도우로 deque를 구현할 수 있다고 하는데 덱은 데이터를 삽입하고 삭제할 수 있는 자료 구조로 리스트와 어레이와 비슷한 개념으로 이해했다. 하지만 관련된 함수가 조금 다르니까 이를 기억하도록 하자 그림으로 표현하며 아래와 같다. 코드로 deque를 불러오려면 from collections import deque deque를 생성하려면 dq = deque() 이런 방식으로 하면 된다! 2024. 4. 14.
투 포인터 투 포인터는 두 개의 포인트를 잡고 그와 관련된 값을 구하고 포인트를 옮겨가면서 해당하는 값을 부여하는 방법이다 즉, 포인트의 값이 변함에 따라 그와 관련된 값이 변한다. 그러므로 전체 데이터나 리스트를 확인할 필요 없이 해당 하는 부분만 바꾸면 되므로 코드의 계산 용량이 많이 줄어든다 그림으로 표현하면 아래와 같다! 2024. 4. 13.
2016년 첫번째 코드 사실 코드를 작성하면서 틀린 부분이 없었다...단지 주의할 점은 문제를 열심히 읽자는 것.. 2016년 1월 1일은 월요일이 아니라 금요일이다!!!! 먼저 문제를 보고 든 생각은 나눗셈을 이용한 문제라고 생각했다 모든 날 수를 더해서 7로 나누어 나머지 값에 따라 요일을 정하는 방법이다 ex) 1%7 = 1이므로 나머지가 1인 경우는 금요일 2%7 = 2이므로 나머지가 2인 경우는 토요일 이런식으로 월화수목금토일을 만드는 것이다!! def before_month_to_day(x): if x 8: if x % 2 == 0: days = 31*(x//2) + 30*(x//2 - 1) else: days = 31*(x//2 + 1) + 30*(x//2 - 1) return days - 1 else.. 2024. 4. 13.
가운데 글자 가져오기 첫번째 코드 이제 홀수와 짝수를 구분해서 작성하는 코드는 꽤나 익숙해졌다고 느껴진다 이것도 홀수와 짝수일 경우로 나누어 문제를 이해하기로 했다 하지만 인덱싱에 주의해야 하는데, 해당 인덱싱은 하나씩 예시를 들어서 이해하면 쉽게 이해할 수 있다! 예를 들어 홀수: 5 // 2 = 2인데, 해당 인덱싱의 위치와 동일하므로 그대로 사용한다 짝수: 4 // 2 = 2인데, 이 전 인덱스부터 시작해서 해당 인덱스까지 결과로 나와야 하므로 -1부터 +1까지 인덱싱한다 이 내용만 잘 이해하면 뚝딱 풀 수 있다! def solution(s): if len(s) % 2 == 0: start = len(s) // 2 return (s[start - 1 : start + 1]) else: return (s[len(s) //.. 2024. 4. 12.
K번째 수 첫번째 코드 인덱싱이 중요한 문제라는 생각이 들었다! commands의 길이만큼 반복할 것이지만, 해당 값들은 모두 인덱스가 1로 시작할 때 기준이므로 1을 빼고 인덱싱을 해주어야 한다. 해당 과정을 통해 새로운 리스트가 생성된다!! sort를 통해 정렬을 진행하고 새로운 리스트에서 다시 인덱싱을 진행하여 정답에 추가한다!! def solution(array, commands): answer = [] for i in range(len(commands)): start = commands[i][0] - 1 end = commands[i][1] new_array = array[start:end] new_array.sort() answer_index = commands[i][2] - 1 answer.append.. 2024. 4. 11.
008 좋아 첫번째 코드 투포인트를 이용한 상황에서 조금 더 신경쓰면 될 것 같다..? import sys input = sys.stdin.readline n = int(input()) number = list(map(int, input().split())) target = 2 good = [] sort_number = sorted(number) while target != n: one = 0 two = target - 1 while one 2024. 4. 11.
728x90