[Github] fork 사용하기(다른 사람의 repository를 내려받기)

1. 내 github에 추가할 상대 repository를 fork해오기(오른쪽 위에 포크모양 클릭) 2.fork해서 만들어진 내 github의 repository url을 복사 후 받아오기 (clone URL) 3. 원격 저장소 내 내부 저장소로 받아오기. git clone [Clone URL] 4. pull request작업 수행할 branch 생성 git checkout -b [branchName] 5. 원본 저장소를 원격 저장소에 추가. git remote add origin(branchname) [Clone URL] 6. 코드 수정 및 파일 추가 7. 수정사항을 add git add [fileName] 8.add 한 파일들을 commit git commit -sm "[commit mesagge]"..

GitHub&Git 2021.07.14 0

[백준][Python] 1761 정점들의 거리 : 가중치있는 그래프의 LCA

LCA 기본 형에 dists배열만 만들어주어 루트노드에서 각 정점까지의 거리를 저장해준 구조이다. dfs를 이용해 각 노드 본인의 depth를 기록함과 동시에 top-down으로 거리도 dp_dists에 기록한다. (여기까지의 거리 = 부모노드까지의 거리 + cost값이다.) 그럼 dists와 depth는 끝. sparse table을 통해 각 노드에서 2의 0승,1승,2승 위의 부모노드 번호에 대해 수집한다. LCA함수를 통해 2의 n승 단위로 부모를 빠르게 타고 올라가며 공통조상의 위치를 찾는다. 공통조상만 알면 거리 배열의 연산을 통해 각 정점 간 거리를 구할 수 있다. # 정점들 사이의 최단거리는 dist[a] - dist[lca] + dist[b] - dist[lca] # LCA를 지나는 거리가..

백준 2021.08.09 0

[CS] Apache MPM vs NGINX vs Node.js

미스터코 님의 10분 테코톡 시청 후 작성하였습니다. 간단한 정의 MPM(multi-Processing-modules) 서버는 시스템의 네트웍 포트에 연결하고, 요청을 받아들이며, 받아들인 요청을 처리하기 위해 자식들에게 분배하는 다중처리 모듈(MPM)을 선택할 수있다. NGINX - 웹서버 Node.js : Chrome V8 Javascript 엔진으로 빌드된 JavaScript 런타임. [언제 어떤 것을 선택해야 하는가???????] 세가지 모두 '웹서버'의 역할을 할 수 있다. (Node.js는 웹서버역할도 WAS(Express.js)도 가능함. 때문에 결이 좀 다름.) 동시성은 예전이나 지금이나 중요하다. (어느정도 기간동안 무시하지 않을 수 있는 연결들(+요청들)) -옛적엔 너무느린 네트워크(1..

[Java] Java의 main() 메서드

자바의 main() 메서드 Java 프로그램은 특정 순서로 실행되는 Java 명령의 시퀀스기 때문에 시작과 끝이 있다. Java 프로그램을 실행하려면 JVM에 프로그램 실행을 시작할 위치를 신호해야한다. Java의 모든 명령어(코드)는 Java 클래스 내에 위치해야한다. 클래스는 함께 속한 데이터와 명령어를 그룹화하는 방법이다. 따라서 클래스는 변수와 메서드를 모두 포함 할 수 있다. 변수는 데이터를 포함할 수 있으며, 메서드는 데이터에 대한 작업 집합(명령어)을 함께 그룹화한다. 자바 클래스 선언 Java 코드는 클래스와 동일한 파일 이름을 가진 파일에 있어야하며 파일 접미사로 끝나야한다. 즉 파일이 클래스 이름과 일치하는 파일에 있어야 Java SDK의 Java 컴파일러 또는 Java IDE 내부에서..

Java 2022.07.28 0

[알고리즘] 문자열 매칭 3종세트 KMP, 보이어무어, 라빈카프

고지식한 매칭 text = 'ABABCA' for i in range(len(text)-len(target)): for j in range(len(target)): if text[i+j] == target[j]: j+=1 else: break print('Identified') break KMP 알고리즘.(시작위치 후보를 잡아놓자) 불일치가 발생한 텍스트 스트링의 앞 부분에 어떤 문자가 있는지를 미리 알고 있으므로, 불일치가 발생한 앞 부분에 대하여 다시 비교하지 않고 매칭을 수행. 패턴을 전처리하여 배열 next[M]을 구해서 잘못된 시작을 최소화함. next[M]: 불일치가 발생했을 경우 이동할 다음 위치 패턴내에서 반복하는 구간이 있을것이라는 전제.. 하지만 없다면 무의미. 하지만 패턴이 길다는 전..

[백준] 틀렸을 시 원인 분석.

틀렸습니다 : output이 틀렷을 경우. testcase 초기화를 잘해줘야함. 시간초과 : 시간복잡도 제한을 못맞췄을 경우. => 보통 추상화 알고리즘을 잘못썼거나, 변하지 않는 dp값을 여러번 계산했을 경우(계산값 저장을 하지 않는 경우), 내장함수 계산값을 저장해두지 않고 반복문마다 돌리는 경우 => 파이썬에서 어떤 값이 같은지 비교할 때 == 대신 is를 사용하면 안됨. ++list를 큐 또는 덱으로 사용하면 절대 안됨. 반드시 collection.deque를 써야함. 런타임 에러 : 실행 시 나타나는 type, index접근 등 에러, 재귀함수가 있는 경우에는 재귀 깊이 제한인 sys.setrecursionlimit(100000)을 써줘야함. 메모리 초과 : sys.setrecursionlimi..

practivceAlgorithm 2021.07.10 0

[OS] CPU Scheduling : 프로세스를 .CPU에 할당하는 방법들

CPU Scheduling 스케줄링 실행준비가 된 프로세스 중에서 하나를 선택해 CPU를 할당 하는 것. 결국 CPU를 잘 사용하기 위해 프로세스를 잘 배정하기 위함. 조건 : 오버헤드는 낮고, 사용률은 높고, 기아 현상은 낮을때. 목표 Batch System : 가능하면 많은 일을 수행한다. 시간(time)보다 처리량(throughout)이 중요하다. Interactive System : 빠른 응답 시간, 적은 대기 시간 Real-time System : 기한(deadline) 맞추기 선점 / 비선점 스케줄링 선점(preemptive) : OS가 CPU의 사용권을 선점 할 수 있는 경우, 강제 회수하는 경우 비선점(nonpreemptive) : 프로세스 종료 or I/O 등의 이벤트가 있을 때까지 실행..

운영체제 2021.08.30 0

[백준][Python] 2374 같은 수로 만들기

풀이 1. 극소점부터 큰값이 나올때마다 그만큼 채워주면서 연산. import sys input = sys.stdin.readline n = int(input()) cnt = 0 stack = [int(input())] max_num = stack[-1] for _ in range(n - 1): num = int(input()) if stack[-1] < num: cnt += num - stack[-1] max_num = max(max_num, num) stack.pop() stack.append(num) cnt += max_num * len(stack) - sum(stack) print(cnt) 풀이2. 분할정복으로 max_idx를 pivot으로 좌우 분할 해 각 구간의 연산값을 더해주며 최상단까지 올라..

[백준][Python] 6568 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다.

비트문제라기엔 EOF출력이 더 어려웠다.. import sys input = sys.stdin.readline while True: memory = [0 for _ in range(32)] cal = 0 pc = 0 for i in range(32): try: memory[i] = int(input().rstrip(),2) except EOFError: exit() while True: adress = memory[pc] cmd = adress//32 value = adress%32 pc = (pc + 1)%32 if cmd == 0: memory[value] = cal elif cmd == 1: cal = memory[value] elif cmd == 2: if not cal: pc = value el..

백준 2021.09.10 0

[백준][Python] 17503 맥주축제

선호도 관리를 어떻게 할 것인가? 일단 힙으로 하긴했는데.. 최선일지는 모르겠다. import sys from heapq import heappop,heappush input = sys.stdin.readline # N일 K종류 맥주 무료 제공 # 하루 맥주 1병 전에 받은 종류 못받음. # 맥주 N개의 선호도 합 M이상. # 조합 K 종류 맥주 중 N개 추출 합이 M이상되는. # 도수 낮은거 순으로 먹음. N, M, K = map(int, input().split()) beers = [list(map(int, input().split())) for _ in range(K)] beers2 = sorted(beers,key=lambda x: (x[1],x[0])) heap = [] flav_p = 0 cn..

백준 2021.08.18 1

[SSAFY] 싸피 6기 서울 비전공 최종 합격 후기.

이 블로그는 개인 공부정리용 블로그지만 선배 기수분들에게 받은 유용한 정보들을 다음 기수들에게 물려주고자 합격후기를 작성합니다. 최초 전공인 산업공학에서 생산관리직무를 준비하다가 웹개발에 관심을 갖게 되었고 독학은 4개월정도 진행했습니다. Essay 1번문항에서 SW개발경험을 토대로 한 지원동기 2번문항에서 어떤 구직활동을 왜 어떻게 해왔고 어떤것을 얻었는지를 정리하시면 됩니다. 저는 1번문항 2번문항 둘다 2개의 소문단으로 작성했는데 3개월짜리 스마트제조 국비교육을 들은 내용으로 반을 채웠고 나머지는 혼자 독학을 한 내용과 과정, 어떻게 독학을 통해 성장해왔는지를 어필했습니다. (스마트제조의 어플리케이션단 개발, 사용자중심의 웹서비스개발에 대한 관심도를 드러냈습니다.) 개인적으로 SW개발에 대한 관심도..

후기 2021.07.05 31

[백준][Python] 1238 파티 : 역방향 그래프로 돌아오는 길을 찾자

처음 풀이는 다음과 같다. 모든 노드에 갔다가 돌아오는 각 합중 max값을 찾는 풀이 그리고 다른 분들의 풀이를 본 결과 역방향 그래프를 그리는 것이 반대로 도착지점에서 현지점까지 오는 거리를 측정할 수 있음을 깨달았다. import sys input = sys.stdin.readline from heapq import heappop, heappush def dijkstra(start): heap = [] visited = {i: float('inf') for i in range(1, N + 1)} visited[start] = 0 heappush(heap, (0, start)) while heap: time, cur_node = heappop(heap) if visited[cur_node] < time..

백준 2021.09.30 0

[Python] 파이썬 requests, json으로 REST API data 보내고 받기

카카오톡 2차 정답이 없는 문제. 요구사항을 기반으로 trade-off를 감안해 로직을 설계. 로직을 개선해가는 역량. REST API 호출. API결과가 JSON 포맷. REST API 호출 처리 모듈, JSON 파서 사전 준비. pprint, bs4 쓸수있나? 일단 깔아놔보기. JSON? Java Script Object Notation. 통신을 통해 데이터를 주고 받는데 사용되는 규칙, 형식 JSON은 dictionary에 key - value 형식으로 이루어진다. REST API로 이용해 받아온 값을 JSON형태 import json, requests response = requests.get(URL).json() response = requests.post(URL,header,data).json..

Django&Python 2021.09.23 0

[백준][Python] 18427 함께 블록 쌓기

박스 순회하며 누적합. 자주나오는 유형이다. 중요한건 누적합은 뒤에서부터 쌓아줘야 중복이 안생긴다는것. 때문에 H부터 1까지 순회해주며 더해줬다. import sys input = sys.stdin.readline N, M, H = map(int, input().split()) boxes = [list(map(int, input().split())) for _ in range(N) ] dp = [0]*(H+1) for box in boxes: for idx in range(H,0,-1): if not dp[idx]: continue for num in box: if idx + num > H: continue dp[idx+num] += dp[idx] for num in box: dp[num] += 1 pr..

백준 2021.09.14 0

[SWEA][Python] 5110 수열 합치기

이거두 그냥 슬라이싱으로 배열 끼워넣기 했다.. 이거두 pass됨 for test in range(1,int(input())+1): N, M = map(int, input().split()) arr = [float('inf')] cnt = 0 for _ in range(M): a = list(map(int, input().split())) for i in range(N*cnt+1): if a[0] < arr[i]: arr[i:i] = a break cnt += 1 print(f'#{test}',end=' ') print(*arr[-11:-1][::-1]) 요건 연결리스트 소스 class Node: # 초기화 메소드 def __init__(self, data): self.data = data self.li..

swexpertacademy 2021.08.24 0

[GitHub] 깃헙 잔디 사라졌을 때 당황하지 않고 복구하는 방법.

1.잔디 옵션이 프라이빗으로 바뀌어있는지 확인한다. => public으로 바꾼다. 2. 깃헙에 등록되어있는 메일이 바뀌어서 local git의 메일주소와 불일치 하게 되었는지 확인한다. => 깃 메일을 일치시키던가 깃헙에서 삭제한 메일을 다시 등록한다. 3. 특정레포의 강제푸시 혹은 merge로 commit기록이 전부 초기화 됐다!! 이러면 정말 눈물나지만 해결 방법이 있다. github api를 이용해 과거로 회귀하는것. 1. Access Token을 발급받는다. https://github.com/settings/tokens 에 가서 토큰 생성을 누르고 repo전체 선택 후 발급 받는다. 2. 강제 푸시 전 혹은 레포가 정상일 적 마지막 커밋 SHA값을 확인한다. curl -H "Authorizatio..

GitHub&Git 2021.07.25 0

[알고리즘] 모든 정점을 연결하는 MST (Prim, Kruskal)

최소 신장 트리(MST, 크루스칼, 프림 알고리즘) 최소 신장 트리(Minnimum Spanning Tree) spanning Tree 중에서 사용된 간선들의 가중치 합이 최소인 트리. 신장 트리(Spanning Tree)란 그래프 내의 모든 정점을 포함하는 트리 최소 연결 : 간선의 수가 가장 적다. n개의 정점을 가지는 그래프의 최소 간선의 수는 (n-1)개 이고, (n-1)개의 간선으로 연결 되어이으면 필연적으로 트리형태가 되고 이게 신장 트리이다. 즉 그래프에서 일부 간선을 선택해서 만든 트리. DFS, BFS을 이용하여 그래프에서 신장 트리를 찾을 수 있다. 탐색 도중에 사용된 간선만 모으면 만들 수 있다. 하나의 그래프에는 많은 신장 트리가 존재할 수 있다. Spanning Tree는 트리의 ..

[백준][Python] 18869 멀티버스 : 좌표압축

hashmap에 tuple로 조합수를 구하는 것까지는 접근했는데 set으로 압축시키는 것은 생각을 못했음. 이러면 결국 tuple에 각 순위값이 들어가게 되는데 동일한 요소의 경우 묶여서 사라지기때문에 순위값의 갯수가 적어져 일일히 비교할 필요가 없어짐. 정렬과 indexing을 같이 사용해서 크기 비교를 해야할 때 유용하게 쓸 수 있을 것으로 보임 import sys input = sys.stdin.readline from collections import defaultdict m, n = map(int, input().split()) universe = defaultdict(int) for _ in range(m): planets = list(map(int, input().split())) keys ..

[백준][Python][2021 하반기 삼성 코딩테스트] 23291 어항정리

좀 무식하게 푼 느낌이 없잖아 있습니다. 달팽이 거꾸로 파고들면서 그렸습니다. 빈칸은 -1로 표기 빈칸 없을때와 빈칸이 있을 떄 1열로 펼치는 순서가 다릅니다. import sys input = sys.stdin.readline from collections import deque # 달팽이를 만든다. 시작좌표는 def make_snail(): row, col = n, n if n**2 - N >= n: col -= 1 matrix = [[0] * col for _ in range(row)] q = deque() q.append((row - 1, col - 1, 0)) blank_cnt = row * col - N start = N - 1 while q: x, y, d = q.popleft() matri..

[백준][Python] 20164 홀수 홀릭 호석

평범한 분할정복문제입니다. 3분할할때 칸막이 설치 위치만 잘 고려해주면 됩니다. import sys input = sys.stdin.readline def count_odd(n): cnt = 0 for i in n: if int(i) & 1: cnt += 1 return cnt def divided(n, cnt): global max_v, min_v s = str(n) cnt += count_odd(s) if len(s) == 1: min_v = min(min_v, cnt) max_v = max(max_v, cnt) return elif len(s) == 2: divided(n // 10 + n % 10, cnt) else: for i in range(1, len(s) - 1): for j in rang..

백준 2021.10.18 0

[백준][Python] 18185 라면 사기(small)

3개 -> 2개 -> 1개 각 지점마다 살수있는 만큼 사주면 된다. 주의할 점은 두번째 지점의 갯수가 세번째보다 큰경우. 이경우는 2개씩 사는 과정을 먼저 해주어야한다. import sys input = sys.stdin.readline def buy_triple(idx): global cost k = min(arr[idx: idx + 3]) arr[idx] -= k arr[idx + 1] -= k arr[idx + 2] -= k cost += 7 * k def buy_double(idx): global cost k = min(arr[idx: idx + 2]) arr[idx] -= k arr[idx + 1] -= k cost += 5 * k def buy_each(idx): global cost cost..

백준 2021.10.06 2

[백준][Python] 15900 나무탈출

리프노드부터 거리 합이 홀수면 승 짝수면 패. 근데 이거 좀 너무한게 변수명을 다 저렇게 줄여야 통과됨.. 아니면 시간초과 import sys input = sys.stdin.readline from collections import deque,defaultdict # 왜? BFS로 안풀림? def BFS(start): q = deque() q.append([start,0]) vi[start] = True a = 0 while q: c_n,d = q.popleft() for n_n in g[c_n]: if not vi[n_n]: vi[n_n]=True q.append([n_n,d+1]) if len(g[n_n])==1: a += d+1 return a N = int(input()) g = defaultd..

백준 2021.09.02 0

[알고리즘] sweeping-line 라인 스위핑을 통한 필터링

라인스위핑 스위핑 알고리즘이란? 특정 선이나 공간을 한쪽에서부터 쓸어버리는 식의 알고리즘. 일정 좌표, 축기준 정렬 한 뒤 일정 시점의 좌우 가장 가까운 두 점사이의 거리보다 멀리떨어진 점은 조사하지 않는 방식. 가지치기를 하겠다는 이야기다.(O(NlogN)) 아래는 2261번 문제에 대한 분할정복 풀이. import sys input=sys.stdin.readline INF=sys.maxsize # 두 점 사이의 거리를 구하는 함수 def dist(a,b): return (a[0]-b[0])**2+(a[1]-b[1])**2 def divide(start,end): # 점 하나면 버림 if start==end: return INF # 점 두개면 거리구해서 리턴 elif end-start==1: retur..

[Django] 장고 html template문법

장고 생활코딩 장고 템플릿 문법. {% extends "base_generic.html" %} {% block title %}{{ section.title }}{% endblock %} {% block content %} {{ section.title }} {% for story in story_list %} {{ story.headline|upper }} {{ story.tease|truncatewords:"100" }} {% endfor %} {% endblock %} {{}}두개는 변수. 뷰에서 탬플릿으로 context전달이 가능하다. 함수에서 html문서로 객체의 전달이 가능하다. sectin.title은 뷰에서section이라는 객체를 html문서로 보냈다는 뜻이고 그 안에 title속성을 전달..

Django&Python 2021.08.30 0

[SW 공학] 디자인 패턴 - 바퀴를 다시 발명하지 마라.

디자인 패턴(객체를 어떻게 구성할 것인가?) 이름의 중요성 디자인 패턴 이전에는 명칭이 없어서 같은 내용의 구조를 서로에게 설명해주기위해 수십시간을 낭비. 이름이 곧 개념을 정의한다 디자인 패턴도 이런 자주 사용되는 개념에 이름을 정의한 것. *비슷한 문제 상황을 해결했던 해결책을 잘 기억하고 다시 적용할 수 있다면 유용할 것이다. * 동료 개발자들과 잘 공유하기 위한 방법이 곧 ‘이름’을 지어주는 것이다. 소프트웨어 공학에서 디자인 패턴(Design pattern)은 프로그램 개발 시에 자주 부닥치는 애로 상황에 대한 일반적이고 재사용 가능한 추상화된 해결책이다. 소프트웨어 공학적으로 디자인 패턴은 패러다임과 알고리즘과는 다르다. OOP 패러다임으로 개발을 하든, 함수형 프로그래밍 패러다임으로 개발을 ..

소프트웨어 공학 2021.08.22 0

[SW 공학] 소프트웨어란? 소프트웨어의 공학적 특징

소프트웨어 공학 소프트웨어는 상품. 공학은 좋은 상품을 낮은 가격에 계획대로 만들기 위한 방법론. 소프트웨어란? 단순 프로그램이 아닌 개발, 운용, 보수에 필요한 모든 관련 정보(설계문서가 가장 큰 비중) 설계, 개발과정에서 비용이 많이들고 완제품 생산은 비교적 저비용 소프트웨어엔 물리적인 부품이 없기 때문에 신뢰도의 결정은 생산과정이 아닌 설계과정에서 측정 결함을 설계과정의 테스팅으로 찾아내는 형식.(물리적 검출 불가) 소프트웨어의 특징 복잡성 (complexity) - 수 많은 내부요소들이 있어 상호작용이 많고 복잡하다. 문제가 무엇인지, 요구가 무엇인지 잘 정의하기 힘들다. 요구되는 사항이 서로 상충되어 설계가 어렵다. 순응성 (conformity) - 요구나 환경, 데이터에 따라서 적절하게 변형된..

소프트웨어 공학 2021.08.22 0

[SWEA][Python] 2005 파스칼의 삼각형

stack란에 있어서 억지로 stack처럼 LIFO구현. 조금 더 만지면 복사안하고 stack2개로 돌릴 수 있을 것같은데 그냥 구상만.. import sys sys.stdin = open('input.txt') test = int(input()) for test in range(1, test+1): n = int(input()) pascals = [[] for _ in range(n)] #* *삼각형을 그릴 틀* pascals[0].append(1) #* *첫열은 그냥 삽입* for i in range(1, n): #* *2열부터 그릴 것임.* stack = pascals[i-1][:] #* *1열(i-1열을 복사)* pascals[i].append(1) #* *첫인자 삽입* for j in range..

swexpertacademy 2021.08.19 0

[Python] 파이썬의 메모리 관리 : Garbage Collections

Python 의 Garbage Collection GC는 언제 사용되는가? 파이썬은 메모리관리에 reference counting과 garbage collection을 이용한다. reference counting : 참조 횟수가 0이 된 객체를 메모리에서 해제 garbage collection : 참조 횟수가 0에 도달할 순 없지만 reference cycle(순환참조)가 일어날 때. 엄밀히 말하면 reference counting 도 garbage collection의 한 형태. 레퍼런스 카운팅 모든 객체는 참조 당할 때 레퍼런스 카운터를 증가시키고 참조가 없어질 때 카운터를 감소시킨다. 카운터가 0이 되면 객체가 메모리에서 해제된다. sys.getrefcount()로 확인 가능. 순환 참조 간단한 예..

Django&Python 2021.08.19 3

[알고리즘] Cut Vertex, Cut Edge 단절 점, 단절 선 : sub-tree의 단절

Cut Vertex ( 절단점 찾기 ) Cut Vertex(절단점) 그래프의 절단점이란 해당 정점을 삭제했을 때 그래프가 두 개 이상의 그래프로 나누어 지는 점을 말합니다. 이 때 그래프는 항상 undirected graph입니다. 1) 직관적으로 절단점을 찾는 방법을 생각해 봅시다. (러프한 방법. 직접 삭제해본다. 섬나누기 or 연구소 같은 방법.) 느낌상 모든 정점에 대해 그 정점을 삭제한 후의 그래프를 먼저 따로 구합니다. 그 다음 DFS 혹은 BFS 로 몇 번만에 전체 그래프를 cover할 수 있는지를 보면 될 것 같습니다. 그러나 이 방식은 각 정점마다 알고리즘을 돌려야 하니 정점이 많아 질수록 매우 불리해 집니다. 2) 무향그래프의 DFS Spanning tree를 보면 cross edge가..

[알고리즘] SCC (Strongly Connected Component) 강한 연결 요소

강한 연결 요소(SCC) 무향 그래프에서 절단점이 존재하지 않는 그래프를 우리는 Biconnected component라고 부릅니다. 절단점이 없다면 그래프 상의 어떤 점을 삭제하더라도 임의의 두 정점은 서로로 가는 경로가 존재하게 됩니다. Biconnected Component Undirected Graph에서 절단점이 존재하지 않는 그래프 Strongly Connected Component 만약 그래프의 임의의 한 정점에 대해 다른 모든 정점으로 가는 경로가 존재한다면 그 그래프를 SCC(Strongly Connected Component)라고 한다. SCC(Strongly Connected Component)특징 같은 SCC내에서 뽑은 임의의 U, V 점에서 U->V 혹은 V->U의 경로(직/간접적..

[백준][Python] 14925 목장 건설하기

가장 큰 정사각형 만들기와 동일하다. 장애물이 나오면 최소 길이가 0으로 끊기고 다시 1부터 하나씩 늘려가는방식. import sys input = sys.stdin.readline # 가장 큰 정사각형 문제와 같은 문제. 위 좌, 대각 안쪽 중 가장 변의 길이가 짧은 변에 하나를 추가시켜주는 방식이며 # 장애물을 만나면 다시 0부터 시작한다. M, N = map(int, input().split()) matrix = [list(map(int, input().split())) for _ in range(M)] dp_length = [[0 for _ in range(N+1)] for _ in range(M+1)] max_length = 0 for i in range(1,M+1): for j in range..

백준 2021.08.18 0

[백준][Pyhton] 13275 14444 가장 긴 펠린드롬 부분 문자열

마나커 알고리즘의 핵심은 #을 삽입해 짝수 펠린드롬에 대비하는것, 중심점과 반지름 a배열의 관리. a배열의 관리는 r과 현재 인덱스now값에 의거해 관리되며 r과c값은 펠린드롬 범위 내 외에서 출발지점 인덱스 0에서 얼마나 멀어졌냐에 따라 관리된다. import sys input = sys.stdin.readline def manacher(string): n = len(string) a = [0] * n # i번째 문자를 중심으로 하는 가장 긴 팰린드롬 반지름 크기. c = 0 # 중심점(center) 초기화 r = 0 # 시작점에서 가장 먼 반경(펠린드롬 끝나는 인덱스중 가장 큰 값.) for now in range(n): # i번째 문자가 now 아래쪽에 있는 문자를 중심으로 하는 팰린드롬 범위 밖의..

백준 2021.08.18 0

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

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

webDeveloper 2021.07.28 1

[백준][Python] 11054 가장 긴 바이토닉 부분수열.

LIS 시리즈 문제중 하나이다. 역순으로도 구해서 각 지점 카운트합이 가장 높아지는 부분이 꺽이는 부분. N = int(input()) A = [0] + list(map(int, input().split())) LDS = [1]*(N+1) LIS = [1]*(N+1) Bi = [] # 바이토닉 수열의 핵심은 앞에서 LIS하고 역순 LIS dp를 각각 만들어 # 두 dp 인자의 합 = 올라갔다 내려오는 cnt를 만드는 것. # 싸피 CT문제 예제로 나오는 문제라 아이디어는 매우 쉬웠다. for i in range(1,N+1): for j in range(1,i): if A[i]>A[j] and LIS[i]A[-j] and LDS[-i]

백준 2021.07.24 0