분류 전체보기 84

[바닐라 JS로 크롬 앱 만들기] weather

getCurrentPosition은 두 개의 인자를 필요로 한다. 첫 번째는 위치 정보를 얻어오는데 성공했을 때 실행하는 함수이고, 두 번째는 실패했을 때 실행하는 함수이다. 위의 코드를 실행했더니 왼)이런게 뜸! 와우 신기하다!! 오)허용 누르니까 콘솔 창에 내 위치 정보가 뜬다. 위도 경도까지 다 뜨는게 신기했다 https://openweathermap.org/ Сurrent weather and forecast - OpenWeatherMap Access current weather data for any location on Earth including over 200,000 cities! The data is frequently updated based on the global and local ..

[바닐라 JS로 크롬 앱 만들기] todo list

이제 완성까지 얼마 남지 않았다. 투두리스트랑 날씨만 하면 된다! index.html 일단 html 파일에 위 코드를 적는다. - ul의 밑에 li는 쓰지 않는다. 일단 처음에는 추가한 to do list가 없을 것이기 때문에 비워두기 위해서이다. 저번 포스팅에서 배경화면 만든 것과 똑같이 js에서 요소를 추가할 것이다. - 한가지 더 주목할 게 있다. form을 사용한 것. form을 쓰면 form이 제출될 때 자동으로 새로고침을 하는 기본동작이 있었다. (greeting에서 함) 아 새로고침을 막기 위한 코드를 짜줘야 한다. submit할 때 해야할 것 1. 새로고침 막기 2. input에 적힌 text 저장하기 3. 제출한 후 input 비우기 to do list 만들기! 어쩌구 저쩌구 이렇게 만들..

[바닐라 JS로 크롬 앱 만들기] random background

quote와 비슷하다. 배경 사진을 여러 개 저장해놓고 랜덤으로 선택해서 화면에 보여줄 것이다. 일단 이렇게 사진을 여러 개 저장해둔다. 랜덤으로 화면에 띄울 것이기 때문에 2개 이상 저장해놓자. 그런 다음 quote에서 한 것처럼 랜덤으로 사진을 골라준다. chosenImage 변수에 랜덤 이미지가 저장되어 있다. 지금까지 우리는 html에 만들어져 있는 요소를 js 파일에 가져와서 그 요소를 수정했다. 이제는 js에서 직접 요소를 만들어서 그걸 html에 추가해보려고 한다. document.querySelector()가 아니라 document.createElement()를 사용해서 요소를 만든다! bgImage는 아직은 js에만 존재하는 요소이다. 이걸 html의 body 영역에 추가해보자. back..

스택과 큐

스택 LIFO: Last-in First-out. 나중에 들어온 데이터가 먼저 나간다. 스택은 DFS: Depth First Search, 백트래킹 문제를 풀 때 사용한다. 후입선출은 재귀 함수 알고리즘 원리와 같다. top: 삽입, 삭제가 일어나는 위치 파이썬 연산(리스트 이용) s.append(data): top 위치에 data를 저장 s.pop(): top 위치에 있는 데이터를 삭제, 확인 s[-1]: top 위치에 있는 데이터 확인 큐 FIFO: First-in First-out. 먼저 들어온 데이터가 먼저 나간다. 삽입과 삭제가 양방향에서 이루어진다. BFS: Breadth First Search에서 사용됨. rear: 큐에서 가장 끝데이터 front: 큐에서 가장 앞 데이터 파이썬 연산(리스트..

코딩 테스트 2023.11.19

구간 합

합 배열(S)을 구하는 것부터 시작한다. S[i] = A[0] + A[1] + ... + A[i-1] + A[i] 인덱스 0 1 2 3 4 5 리스트 A 3 5 2 1 9 6 합 배열 S 3 8 10 11 20 26 ex) S[4] = A[0] + A[1] + A[2] + A[3] + A[4] = 3 + 5 + 2 + 1 + 9 = 20 A[i] ~ A[j] 리스트의 합을 구한다고 하자. - 합 배열(S) 없이 구한다면, 최악의 경우 시간 복잡도가 O(N)이다. - 하지만 위의 합 배열을 사용한다면 O(1)으로 시간 복잡도가 확 줄어든다. 합 배열 S 구하는 공식 S[i] = S[i-1] + A[i] 구간 합 구하는 공식(A[i] ~ A[j] 리스트의 합) S[j] - S[i-1] 예를 들어서 A[1] ..

코딩 테스트 2023.11.18

배열과 리스트

파이썬에서는 리스트가 배열의 특성도 함께 내포하고 있지만, 배열과 리스트는 확실히 다른 자료구조이다. 배열 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조이다. 인덱스를 사용하여 값에 바로 접근할 수 있다. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요하다. 배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없다. 리스트 값과 포인터를 묶은 '노드'를 포인터로 연결한 자료구조이다. 인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근해야 한다. (접근하는 속도가 느리다.) 포인터로 연결되어 있으므로 데이터를 삽입하거나 삭제하는 연산 속도가 빠르다. ..

코딩 테스트 2023.11.18

시간 복잡도

[Do it! 알고리즘 코딩 테스트] 최근에 백준 문제 푸는거에 재미를 붙였다. 지금 실버1인데 올해 안에 골드 1이 되겠다는 목표로 열심히 풀어보고자 한다. 지금 실력으로는 문제를 보면서 어떤 알고리즘을 써야 하는지 바로 떠올리기가 힘들다. 그래서 알고리즘 공부를 찬찬히 하면서 실력을 기르려고 한다. 이 책을 2주 안에 끝낼 것이다! 시간 복잡도 어떤 알고리즘을 써서 문제를 풀어야 할지를 결정하는데 시간 복잡도가 중요하다. 일반적으로 파이썬은 1초에 2000만~1억 번 연산을 한다. 최악의 경우를 따져봐야 하기 때문에 파이썬이 1초에 2000만 번 연산을 한다고 생각하고 계산하자. 예를 들어 수를 정렬하는 문제가 있다. 시간 제한은 2초이고, 수의 개수 N(1

코딩 테스트 2023.11.17

[백준 2164번 카드2] deque 사용하기

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net list 사용해서 몇 번이나 풀었는데도 시간초과로 실패했다. import deque를 사용했더니 단번에 풀렸다. from collections import deque n = int(input()) queue = deque([i for i in range(1, n+1)]) while len(queue) != 1: queue.popleft() if len(queue) == 1: break queue...

코딩 테스트 2023.10.31

[이코테] DFS/BFS 문제 : Q 15. 특정 거리의 도시 찾기

문제 어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다. 이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상 0이라고 가정한다. 예를 들어 N=4, K=2, X=1일 때 다음과 같이 그래프가 구성되어 있다고 가정하자. 이 때 1번 도시에서 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 2인 도시는 4번 도시 뿐이다. 2번과 3번 도시의 경우, 최단 거리가 1이기 때문에 출력하지 않는다. 입력 조건 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다..

코딩 테스트 2023.08.11

[이코테] DFS/BFS 문제 : 미로 탈출

문제 동빈이는 N x M 크기의 직사각형 형태의 미로에 갇혀 있다. 미로에는 여러 마리의 괴물이 있어 이를 피해 탈출해야 한다. 동빈이의 위치는 (1, 1)이고 미로의 출구는 (N, M)의 위치에 존재하며 한 번에 한 칸씩 이동할 수 있다. 이때 괴물이 있는 부분은 0으로, 괴물이 없는 부분은 1로 표시되어 있다. 미로는 반드시 탈출할 수 있는 형태로 제시된다. 이때 동빈이가 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하시오. 칸을 셀 때는 시작 칸과 마지막 칸을 모두 포함해서 계산한다. 입력 조건 첫째 줄에 두 정수 N, M (4 = m: continue # 벽인 경우 무시 if graph[nx][ny] == 0: continue # 해당 노드를 처음 방문하는 경우에만 최단 거리 기록 if gra..

코딩 테스트 2023.08.10