TIL 알고리즘(6), 스파르톤

알고리즘

목록 보기
6/21

SQL

Query the list of CITY names from STATION that do not end with vowels. Your result cannot contain duplicates.

select distinct CITY from STATION where CITY regexp '[^aeiou]$'

사실 좀 긴가민가했다.
포함하지 않으려면 [^]형식이어야하는데
[^aeiou]가 맞나.. [aeiou^]가 맞나..

그래도 적어도 내가 아는 한은 앞에서부터 읽어가는 게 맞을 것 같았다.

$와의 연계도 조금 헷깔렸다.
$만큼은 앞에서부터 읽어들어간다기보다는 앞의 단어가 $의 수식을 받는 느낌이어서
썩 좋게 받아들여지지가 않았다.

알고리즘

내 풀이

def solution(a, b):
    if a % 2 == 1 and b % 2 == 1:
        return a*a + b*b
    elif a % 2 == 1 or b % 2 == 1:
        return 2 * (a + b)
    else:
        if a >= b:
            return a - b
        else:
            return b - a

다른 사람의 풀이 비교 후기

모르는 연산자? 기능? 들이 있었다. 그건 제치고
if 조건문에서 1또는 0 // True또는 False를 받는 점을 이용해서
==1을 생략하는 풀이가 있었다.

if a % 2 and b % 2:
	return ~~~

손 아프게 괜히 칠 필요가 없겠다 싶었다.

하지만 아직 내가 코드를 많~~~이 짜보지 않아서 그런걸지도 모르겠지만,
한 눈에 봤을 때는 잘 모르고 좀 들여다 봐야 '그렇구만' 싶어서 가독성이 좋은 것 같지는 않다.

elifor를 쓰지 않고, not and not을 쓰는 사람들도 있었다.

elif not a % 2 and not b % 2:
	return ~~~

!==만을 사용해서 조건을 만들어내는 것 같아서 보기 좋았다.

+) abs()로 절댓값을 만들 수 있다!!


스파르톤

콘텐츠 팀장 인사

강의는 대부분 실습 위주
코딩 배우는 것은 영어나 중국어 배우는 것과 비슷
여행도 가고 써봐야 ..
작은 프로젝트부터 ..
프로그램 만들면서 성취감 ..
코딩 자신감 ..

원장님

첫 번째 코딩 워밍업

간단한 예시 프로젝트

처음부터 끝까지

//
참조해야하는..

엔진 사용 x
브라우저 o
HTML, CSS, JS
너무 쉽다. 너무 기본이다. -> 가볍게 할 건 아니다. 익숙해지길 바라요~

HTML는 웹사이트를 만드는 것이다.
또한 게임도 만들 수 있다.
(canvas를 사용해서)

HTML은 틀을 (Markup Language다.)
CSS는 디자인
JS 행동을

꺽쇠는 태그
/가 포함되면 클로징 태그
else: 여는 태그

style에서 h1은~~ p는 ~~ 꾸민다.

JS로 생명력을 불어넣지 않으면 서비스 기능이 부족하다.
동작하게 할 수 있다.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    <h1 id="demo">자바스크립트</h1>
    <button onclick="changeText()">클릭해주세요</button>

    <script>
        function changeText() {
            document.getElementById("demo").innerHTML = "안녕하세요"
        }
    </script>
</body>
</html>

내가 작성한 코드
(button을 클릭하면 자바스크립트안녕하세요로 바뀐다.)

<기본 구조>
index.html
main.js
style.css
assets 폴더
images 폴더
sounds 폴더

main.js와 style.css에 몇 줄 딸랑 넣어주면 index.html에서 잘 작동한다 ㅎㅎ

기초 UI 잡아주기
캔버스
2D 그림 세팅

캔버스는
HTML의 태그다
<canvas>
그래픽을 동적으로 생성하고 조작한다.

다양한 그림을 그릴 수 있다.
JS로 조작하면 된다.

핵심을 <canvas> 태그다.
body 태그 안에서.

js에서 html의 canvas id를 가져온다.
그리고 그린다.

y축은 아래방향이 양수로 (0, 0)에서 (200, 100)으로 이동하고, 선을 그릴 수 있다.

html의 3줄(main canvas /main)에 생명력을 불어넣은 것이다.


<header>
<sectoin>
<canvas>
로 구조를 잡는다.

css로는 여기까지고
js를 주로 다룰거예요.

게임 시작과 기본 변수 설정 1

게임 로드 시
시작되게 해야한다.
gameStarted

BG_MOVING_SPEED, bgX
배경 이미지 이동 속도
캐릭터는 이동하지 않는다.
배경이 좌측으로 계속 움직이고, 캐릭터가 달리는 것처럼 보인다.
bgX는 배경 이미지의 x좌표

캔버스는 xy좌표가 중요하당!

백그라운드이미지 width는 무한하진 않다.
근데, 게임에서는 무한하다.
하나가 끝날 때 쯤에는 갖다 붙인다.

bgX -= BG_MOVING)SPEED;

-=로 당겨준다.

scoreText, score
점수 변수
장애물이 캐릭터를 '무사히' 지나갈 때 마다 10점씩 올려야 한다.

gameStarted = false
에서 시작하면 true로


캔버스
한 프레임마다 동작을 검증하면서 로직이 실행되게 할 거예요.
timer로

obstacleArray
장애물이 계속 생성되는데, 관리하는 변수

gameOver
트루 폴스
gameover화면 또는 restart화면

jump
키보드 space 눌러씅ㄹ 때
true, 점프됨

!!한 프레임마다 검사하면서!!

(상하 밖으로 나가게하면 안 된다.)

상수 설정
변하지않는
항상 상

르탄이 width height

시작점
10, 400에서 존재하도록

장애물은 width height가 르탄이보다 작게
장애물 생성 빈도
장애물 속도


assets를 js에서 사용할 수 있게 file들을 가져와야한다.
new Audio();


함수 이름(인풋...)
처리
아웃풋

function drawStartScreen(){
ctx.clear...
ctx.drawImage(bgImage

ctx.drawImage(startImage,
}

js에서 함수를 만드는 것도 중요하지만
실행해줘야한다.


르탄이 객체와 장애물 클래스 생성

왜냐면
르탄이는 한번만 나온다. 계속해서 존재한다.
장애물은 계속 생성된다. -> 클래스로 만든다.


main.js 로직 중요중요!!

  1. canvas에 클릭 이벤트 추가하기

버닝타임

20:30
찐한관리
전용 강의 수강하기
즉문즉답
부스방문

지루하면 미니게임

수강

레플릿
replit

스타일시트??
js에
css로 애니메이션 넣기

github 배포
replit에서 작성한 html파일을 zip으로 다운 받는데,
Trojan:Script/Wacatac.B!ml
라며 방화벽에서 막았다.

학습 질문의 답변으로는 파일자체에 문제가 없으니 보안프로그램을 끄고 다운로드하면 된다고 한다.

방화벽을 무시하고 다운로드는 했는데,
이번에는 압축을 풀 때
오류 0x80070057: 매개 변수가 틀립니다.
라는 오류가 떴다.

구글링해도 windows를 업데이트하라고만 해서,
chatgpt 추천대로 우선 압축프로그램을 다운받고 풀었다.

배포는 github repo에서 setting 중 pages에서 branch를 main으로 save해서 새로고침하면 도메인이 나온다.
-> 배포 끝

실습

배포 강의에서 걸리는 부분이 많아서 벌써 40분 정도를 지체했다..

form과 music button을 만들고 시간이 부족해서 옆에서 매니저?님이 슬범님과 합치는 것을 제안했다.
일단 짜놓은 코드를 슬범님의 코드를 clone한 후에 이식했다.

0개의 댓글