분류 전체보기 720

[백준][Python] 1208 부분수열의 합 : 부분수열은 0과1

어떤 인자를 선택 하느냐 마느냐의 subset은 비트마스크로 풀수도, 가져가는 분기와 가져가지 않는 분기를 나누는 DFS로 모두 풀 수 있다. 이 풀이는 DFS풀이지만 비트마스크 공부 후 비트마스크로도 풀이에 도전할 것. from sys import stdin from collections import defaultdict def dfs(idx, end_idx, subtotal, direction): global answer # 종료 index에 왓을때 오른쪽에 진행되던 분기는 left 딕셔너리에 s-자기의 총합만큼의 left값이 있나 체크 후 그 숫자만큼 답에 더해주고 # 왼쪽은 총합만큼 딕셔너리에 기록해준다.(왼쪽과 오른쪽의 합이 s가 되는 만큼 answer에 더해진다.) if idx == end_i..

[백준][Python] 15685 드래곤커브

턴마다 상황이 바뀌는 시뮬레이션 문제다. 최근 큐빙이나 2048에 도전하면서 시뮬레이션을 좀 풀어봐야겠다 생각했는데 그래도 이건 그나마 쉬운편. 그냥 방향만 90도씩 돌려가며 점마다 새로 찍어주면 된다. 다찍으면 전꺼랑 합쳐서 다시 90도 돌리고 찍어준다. 시뮬레이션 문제가 체감상 많이 어렵게 느껴지니 앞으로 고난이도 알고리즘 습득보다 시뮬레이션이나 구현 및 기본기 문제들을 좀 더 다질 생각. import sys input = sys.stdin.readline dx = [1, 0, -1, 0] dy = [0, -1, 0, 1] n = int(input()) matrix = [[0 for _ in range(101)] for _ in range(101)] for i in range(n): x, y, d, ..

[백준][Python] 1300 K번째 수 : 이분탐색.

mid를 i로 나누면 i번째 행에서 나보다 작은 숫자의 갯수를 알 수 있다. 행의 최대갯수인N을 넘지 않도록 주의하며 나보다 작은 숫자의 갯수를 세준다. cnt값이 최종적으로 목표인 k와의 비교에 따라 점점 k에 수렴하도록 mid값을 조정해간다. import sys input = sys.stdin.readline N = int(input()) k = int(input()) start = 1 end = k # k번째의 '값'을 찾기위한 탐색. start와 end가 만나는 지점에 mid값이 k번째로 정렬된 수 이다. while start = k: answer = mid end = mid-1 else: start = mid+1 print(answer)

[백준][Python] 12852 1로만들기 2 : 방문 배열을 가져가는 dp

dp로 적당히 뒤집고 설계하니 풀렸다. -1, 3의 곱, 2의곱중 이동횟수가 작은값에 1더해서 저장 + 배열 저장. N = int(input()) dp = [[0,[]] for _ in range(N+1)] dp[1][0] = 0 dp[1][1] = [1] if N>1: for i in range(2,N+1): dp[i][0] = dp[i-1][0]+1 dp[i][1] = dp[i-1][1] + [i] if not i%3 and dp[i//3][0]+1 < dp[i][0]: dp[i][0] = dp[i//3][0]+1 dp[i][1] = dp[i//3][1]+[i] if not i%2 and dp[i//2][0]+1 < dp[i][0]: dp[i][0] = dp[i//2][0]+1 dp[i][1] = d..

[백준][Python] 1107 리모컨

결국 만들 수 있는 최고 가까운 수에서 target넘버의 차만큼에 리모컨을 눌러 만든 숫자 i의 길이만큼의 버튼 cnt를 더한값을 최소로 하게 설계하는 것. 최초 DFS로 설계했다가 재귀횟수 초과남. 프루트포스풀이. import sys input = sys.stdin.readline def can_push_num(num): num = list(str(num)) for i in num: if i in broken: return False return True target = int(input()) m = int(input()) broken = list(input().split()) min_push = abs(target - 100) for i in range(1000001): if can_push_num(..

[백준][Python] 1655 가운데를 말해요 : 이중우선순위 큐로 end부분 중앙에 만들기.

최대힙과 최소힙을 써 중앙 인덱스를 반출하기 쉬운 자료구조를 만든다. 양쪽 큐의 길이값 조절에 따라 중앙 인덱스뿐만아니라 일정 순위의 아이템에 접근하기도 용이하게 짤 수 있따. import sys import heapq n = int(sys.stdin.readline()) max_h, min_h = [], [] # max_h[0][1]값을 기준으로 큰 값은 min_h, 같거나 작은 값은 max_h에 삽입 for _ in range(n): num = int(sys.stdin.readline()) if len(max_h) == len(min_h): heapq.heappush(max_h, (-num, num)) else: heapq.heappush(min_h, (num, num)) # 왼쪽 힙의 큰값이 오른쪽..

[CS] REST란? RESTful이란?

REST ? 발단 : HTTP1.0과 HTTP1.1의 개념을 소통하기 위해. 동기 : 웹이 어떻게 동작해야 하는지에 대한 구조적 모델을 만들어 웹 프로토콜 표준을 위한 guiding framework 역할을 하기 위함.' HTTP뿐만 아니라 TCP/IP 프로토콜 스택을 사용하는 어플리케이션 프로토콜이 많은데 수많은 웹 App과 protocol의 사양과 인터페이스의 일관성을 위해 웹 표준이 필요하다 생각. REST는 분산 하이퍼미디어 시스템(웹)의 구조화 스타일을 다룬다. HTTP를 사용하는 웹은 최초 문서 공유의 목적에서 크게 벗어나 하이퍼 미디어 시스템이 되었다. REST는 이런 시스템을 구조화 할때 지켜야 할 스타일을 정의. 웹 App또한 분산 하이퍼미디어 시스템이기 때문에 적용가능. 표준을 위해 여..

[Web] 웹 접근성과 웹 표준, 웹 개방성

접근성? 접근성의 의미와 웹 개발에 접근성을 적용하는 방법을 학습합니다. 모든 사용자가 웹사이트에 액세스할 수 있고 유용하게 활용할 수 있도록 하는 방법을 학습합니다. 개발에 미치는 영향을 최소화하면서 기본적인 접근성을 포함하는 방법을 학습합니다. 사용 가능한 HTML 기능과 이런 기능을 사용하여 접근성을 개선하는 방법을 학습합니다. 세련된 접근성 환경을 만들기 위한 고급 접근성 기법에 대해 학습합니다. 접근성을 한마디로 설명하긴 어렵지만 구현하기 어렵게 만들 필요없음을 알면 된다. 원활한 엑세스, 강력한 인터페이스. 장애가 있는 사용자뿐 아니라 모든 사용자가 더욱 즐거운 마음으로 간편하게 사용할 수 있는 인터페이스의 제작. 접근성이란? 어떤 사이트가 접근가능하거나 엑세스 가능하다고 할때 그 사이트의 콘..

webDeveloper 2021.07.28