Today's Plan
Studying JavaScript knowledge
3. 추가주제
[3] 네트워크 요청
3.1 fetch
3.2 FormData 객체
3.3 Fetch: Download Progress
3.4 Fetch: Abort
3.5 CORS
Coding JavaScript
(1) Pong Game
(2) 깃허브에 업로드하고 내용 정리
Training Coding Test with Python
(1) 재귀
(2) 백준 코딩 테스트 기출 4문제
(3) +3문제
1.
문서 수정하기
ko.javascript.info
2.
Pong Game
예제 코드 대충 훑어보려는데,
html과 css를 굉장히 단순하게 하고, Javascript로만 거의 했기에 저도 그런 식으로 동적생성하려고 합니다.
Javascript코드는 아예 안 봤고 html파일과 css파일만 동일하게 설정했습니다.
📁 index.html
<canvas></canvas>
📁 style.css
body {
text-align: center;
}
(1)
집중 과정 없이 자리 앉자마자 바로 프로젝트 시작해서 바로 실수했습니다.
html파일에서 기본 백그라운드를 canvas로 했는데, Javascript에서는 canvas의 존재를 잊고 body를 전체 게임판으로 쓴다고 착각했습니다. 그래서 canvas에 맵을 그리는게 아니라 div태그를 이용해 선을 만들려고 했습니다. 왜 아무것도 안 그려지지 했는데 실수를 깨닫고 다시 시작했습니다.
let line = document.createElement('div');
line.style.width = '2px';
line.style.height = '50vh';
line.style.backgroundColor = 'white';
body.append(line);
이번 프로젝트는 좌표 조작과 <canvas>를 다루는 능력이 올라갈 것 같습니다. 지난 주에 배운 개념을 잊기 전에 응용할 수 있는 스케줄에 만족스럽습니다.
(2)
우선 canvas안에 text, line 등을 배치해야 하기에 canvas의 크기 정보를 알아내고자 했습니다.e
canvas.width, canvas.height로 구해서 가운데 중심 선을 그어줬습니다.
if (canvas.getContext){
const ctx = canvas.getContext('2d');
ctx.setLineDash([2, 2]);
ctx.beginPath();
ctx.moveTo(canvas.width/2, 0);
ctx.lineTo(canvas.width/2, canvas.height);
ctx.strokeStyle = 'white';
ctx.stroke();
ctx.font = '10px serif';
ctx.fillStyle = 'white';
ctx.fillText('round 5', canvas.width/2, 10);
}
: text를 넣어줬고, 위치 조정하려고 하는데 화질이 왜 이런가해서 좀 알아봤습니다.
:https://ui.toast.com/weekly-pick/ko_20210526
삽질하기 싫으면 꼭 읽어봐야 할 Canvas 트러블 슈팅
2021년 1월, 우리는 TOAST UI CHART 4.0을 공개했다. 큰 변화 중 하나는 기존에 SVG를 사용해서 차트를 생성했다면 4.0에서는 Canvas를 이용해 개발했다는 점이다. 이 글에서는 Canvas 프로젝트에서 흔히 겪
ui.toast.com
- 앨리어싱: 해상도의 한계로 선이나 글자가 계단식으로 나타나 깨져보이는 현상. 안티앨리어싱으로 보정해줘야 한다.
https://developer.mozilla.org/ko/docs/Web/API/Canvas_API/Tutorial/Optimizing_canvas
캔버스 최적화 - Web API | MDN
<canvas> 엘리먼트는 웹에서 2D 그래픽을 렌더링하는 데 가장 널리 사용되는 도구 중 하나입니다. 그러나 웹 사이트와 앱이 Canvas API를 최대한으로 밀면 성능이 저하되기 시작합니다. 그러나 웹 사
developer.mozilla.org
여러 가지 조금 보다보니 해당 프로젝트를 하려면 canvas 와 관련해서 봐야할 것이 조금 많은데, 오늘 계획과는 벗어나는 분량이므로 다음 프로젝트를 진행하기로 결정했습니다.
Pair Game
1. [632c42a] | Init: Pair Game App: set content structure ans style it
프로젝트 초기 셋팅.
사실 git 초기 상태를 기록하는 것을 잊어버려 해당 커밋에 카드를 랜덤 배치하는 기능까지 포함되어 있다.
let cards = ['1','2','3','4','1','2','3','4']
cards = shuffle(cards);
function shuffle(array) {
let currentIndex = array.length, randomIndex;
// While there remain elements to shuffle.
while (currentIndex != 0) {
// Pick a remaining element.
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// And swap it with the current element.
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]];
}
return array;
}
for (card of cards){
let cardDiv = document.createElement('div');
let cardSpan = document.createElement('span');
cardDiv.setAttribute('class','card');
cardSpan.textContent = card;
cardDiv.append(cardSpan);
container.append(cardDiv);
cardDiv.addEventListener('click', () => {
//cardDiv.classList.append('flipped');
console.log(cardDiv);
})
}
3.
Training Coding Test with Python
https://blog.encrypted.gg/943?category=773649
[실전 알고리즘] 0x0B강 - 재귀
안녕하세요, 재귀 파트를 시작하겠습니다. 지금 자신있게 말할 수 있는게 있는데 이 파트가 정말 어려울 것입니다. 물론 이전의 내용들 중에서도 군데군데 어려운게 있었겠지만 이번 단원에서
blog.encrypted.gg
해당 링크의 개념을 읽고 문제 풀이를 했다.
처음에 머리 안 돌아가서 울 뻔 했다. 스스로한테 너무 실망이어서.
항상 이해 못 했던 파트인데, 그래서 학부 시절엔 대충 뭉개고 넘어갔는데, 이제는 그럴 수 없다는 생각에, 힘들어야 진짜공부다 라는 생각에 꾹 참고 문제 풀이를 했습니다.
(1)
https://proprotrainee.tistory.com/94
몇 일 전 위의 문제가 이해가 도통 안되어서 고생하다가 다시 보니 조금 머리가 풀리는 느낌이 들었다.
개념을 읽고 읽고, 해당 문제를 푼 사람들의 기록을 읽고 읽어서 그럴 수 있었다..
(2)
https://proprotrainee.tistory.com/100
[ BOJ / 파이썬 ] 11729 하노이 탑 이동 순서
어떤 분이 통곡의 하노이 탑이라고 적었던데 동의한다. 나는 왜 이 문제가 그 어떤 문제보다 이해가 안 되었을까.. 다행히 널리 알려진 문제라 설명이나 풀이가 많아 엄청 많이 찾아보고 각 설명
proprotrainee.tistory.com
재귀의 클래식. 하노이탑 이동 순서. 코드는 간단명료한데 뭐 하나 착각한게 있어서 이해하는데 시간을 많이 잡아먹었다.
정말 다양한 설명을 접해서 진짜 이제 이해한 느낌.
(3)
https://proprotrainee.tistory.com/101
[ BOJ / 파이썬 ] 1074 Z
/ 제출 1 / import sys input = sys.stdin.readline n, r, c = map(int, input().split()) def findOrderZ(n, r, c): if n == 0: return 0 half = 2**(n-1) if r < half and c < half: return findOrderZ(n-1, r,..
proprotrainee.tistory.com
재귀 함수 정의하는 연습을 제대로 한 문제. 어떻게 탈출문을 작성할 아이디어를 얻을 지, 함수 내용을 어떻게 짤 지에 대해서 깊게 고민해볼 수 있었던 의미있는 문제.
(4)
https://proprotrainee.tistory.com/102
[ BOJ / 파이썬 ] 1991 트리 순회
재귀 진짜 너무 안 된다. 머리가 안 도는건가. https://fre2-dom.tistory.com/231 [baekjoon] 백준 1991번(파이썬): 트리 순회 문제 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주..
proprotrainee.tistory.com
기초 of 기초. 학부2학년 알고리즘 수업에서 이 문제 설명하시던 교수님 표정도, 칠판 디스플레이도 생각나는데 내용은 그 때도 이해가 안 되었고, 지금도 처음에는 이해를 못 했다. 그러나 4문제쯤 되다보니 슬슬 감이 잡힌다.
(5)
https://proprotrainee.tistory.com/103
[ BOJ / 파이썬 ] 1992 쿼드트리
/ 제출 1 / import sys input = sys.stdin.readline n = int(input()) board = [list(input()) for _ in range(n)] def quadtree(startX,startY, endX, endY): print('(') compress = board[0][0] canCompress = T..
proprotrainee.tistory.com
이 문제 풀면서 재귀문제에 대한 이해도가 확 정리되고 있다는 느낌을 받았습니다. 전체 로직 구성이 가능해졌습니다. 그러나 물론 구현 부분에서 예민하고 정확하지는 못해서 첫 제출에서 정답을 못 냈지만, 이해도에 대한 자신은 생겼습니다.
(6)
https://proprotrainee.tistory.com/104
[ BOJ / 파이썬 ] 10870 피보나치 수 5
/ 제출 1 / import sys input = sys.stdin.readline n = int(input()) def fibo(n): if n == 0: return 0 if n == 1: return 1 return fibo(n-1) + fibo(n-2) print(fibo(n)) : 워낙 베이직한 문제라 크게 어려울..
proprotrainee.tistory.com
머리 식힐 겸 잠시 풀어간 쉬운 문제. 이것조차도 전에 와닿던 느낌보다 훨씬 전체 맵이 머릿 속에 구조화되게 그려지는 느낌을 경험했습니다.
(7)
https://proprotrainee.tistory.com/105
[ BOJ / 파이썬 ] 1780 종이의 개수
아.. 거의 다 왔는데 안 풀리냐.. import sys input = sys.stdin.readline n = int(input()) paper = [list(map(int,input().split())) for _ in range(n)] typeCount = {-1:0, 0:0, 1:0} def cut(x, y, n): if n..
proprotrainee.tistory.com
아 이제 조금 늘긴 늘었구나를 느끼고 아 유형풀이의 중요성!을 느낀 문제입니다. 전에 풀이한 'Z'문제나 'quadtree'에서 풀었던 알고리즘과 비슷한 구성이라는 느낌이 바로 들고, 탈출 조건과 로직도 스스로 잘 구현할 수 있었기 때문입니다. 다만, 인덱스 부분에서(사실은 로직의 정확성 문제죠.) 헷갈려 오류를 냈습니다. 다만, 오류도 스스로 찾을 수 있었기에 반복해서 다양한 문제를 접한다면 더 늘 수 있을 것 같다고 생각했습니다.
다른 재귀 관련 응용 문제들 가령 DFS, 백트래킹 문제 등등을 풀다보면 개념이 더 잡힐 것이라고 생각하고 그 때 돌아와 해당 파트를 더 집중 공략하려 합니다.
'Intro > Daily Study Note' 카테고리의 다른 글
[220727] Daily Study Note (0) | 2022.07.27 |
---|---|
[220726] Daily Study Note (0) | 2022.07.26 |
[ 모던 JavaScript 튜토리얼 ] 학습 진도 파트2. 브라우저:문서,이벤트, 인터페이스 (0) | 2022.07.25 |
[220723] Daily Study Note (0) | 2022.07.23 |
[220721] Daily Study Note (0) | 2022.07.21 |