오늘의 목표

더보기

✔️ 프로그래머스 코테 문제 풀기

✔️ Node.js 강의 듣기


⏱️ 오늘의 일정

9:00 ~ 10:00 - 프로그래머스 코테 문제 풀기

10:00 ~ 17:00 - Node.js 강의

17:00 ~ 21:00 - 개인과제

 

 

📜 프로그래머스 코테 문제 풀기

9:00 ~ 10:00 - 프로그래머스 코테 문제 풀기

 

오늘도 알고리즘 코드카타를 진행해 문제를 풀었다.

 

옹알이(2)

https://github.com/YamSaeng/AlgorithmCodingTest/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/133499.%E2%80%85%EC%98%B9%EC%95%8C%EC%9D%B4%E2%80%85%EF%BC%882%EF%BC%89

 

AlgorithmCodingTest/프로그래머스/1/133499. 옹알이 (2) at main · YamSaeng/AlgorithmCodingTest

This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - YamSaeng/AlgorithmCodingTest

github.com

 

처음에는 아기가 말할 수 있는 모든 단어를 우선 조합하고 진행하려 했는데, 옳은 방법 같지가 않아서

좀더 고민을 하다가 아래처럼 풀게 되었다.

 

아기가 말할 수 있는 단어가 포함되어 있는지 찾는 방법이다.

뒤에 babyStrDuplicationCheck는 같은 발음이 연속되는 것을 방지한다.

function solution(babbling) {
    let answer = 0;    

    for (let i = 0; i < babbling.length; i++) {

        let isCheck = true;
        let babyStrDuplicationCheck = 0;

        for (let j = 0; j < babbling[i].length; j++) {           

            if (babbling[i].substr(j, 3) == "aya" && babyStrDuplicationCheck != 1) {
                babyStrDuplicationCheck = 1;
                j += 2;
            }
            else if (babbling[i].substr(j, 2) == "ye" && babyStrDuplicationCheck != 2) {
                babyStrDuplicationCheck = 2;
                j += 1;
            }
            else if (babbling[i].substr(j, 3) == "woo" && babyStrDuplicationCheck != 3) {
                babyStrDuplicationCheck = 3;
                j += 2;
            }
            else if (babbling[i].substr(j, 2) == "ma" && babyStrDuplicationCheck != 4) {
                babyStrDuplicationCheck = 4;
                j += 1;
            }
            else {
                isCheck = false;
                break;
            }            
        }

        if (isCheck == true) {
            answer++;
        }
    }

    return answer;
}

 

 

📜 Node.js 강의

10:00 ~ 17:00 - Node.js 강의

 

2024.09.09 - [IT] - [IT] 인증, 인가

 

[IT] 인증, 인가

인증 ( Authentication ) 인증 ( Authentication )은 서비스를 이용하려는 사용자가 인증된 신분을 가진 사람이 맞는지 검증하는 작업을 뜻한다.인증 ( Authentication )은 일반적인 사이트의 로그인 기능에 해

program-yam.tistory.com

 

 

2024.09.09 - [Javascript/실습] - [Javascript][실습][게시판 프로젝트] 로그인, 회원가입 API

 

[Javascript][실습][게시판 프로젝트] 로그인, 회원가입 API

Express.js를 이용한 게시판 프로젝트를 만들기 전에, 우선 app.js에 기본적인 토대를 만들고 간단한 API를 구현해보자. 모든 Router에서 Prisma를 사용할 수 있도록 utils/prisma/index.js 파일을 생성한다. ap

program-yam.tistory.com

 

2024.09.09 - [IT] - [IT] Access Token, Refresh Token

 

[IT] Access Token, Refresh Token

Access Token Access Token은 사용자의 인증( 예) 로그인 )이 완료된 후 해당 사용자를 인증하는 용도로 발급하는 토큰을 말한다.앞서 쿠키 ( Cookie )에 jwt를 설정하고, 지정된 만료 시간이 지나면 인증이

program-yam.tistory.com

 

2024.09.09 - [Javascript/실습] - [Javascript][실습] Access Token, Refresh Token 발급

 

[Javascript][실습] Access Token, Refresh Token 발급

Access Token과 Refresh Token을 발급해보자. # yarn을 이용해 프로젝트를 초기화합니다.yarn init -y# express, jsonwebtoken, cookie-parser 패키지를 설치합니다.yarn add express jsonwebtoken cookie-parserpackage.json에 "type":"mod

program-yam.tistory.com

 

2024.09.09 - [Javascript] - [Javascript] .env ( 환경 변수 읽어 오기 )

 

[Javascript] .env ( 환경 변수 읽어 오기 )

.env 파일에 설정한 환경변수 값을 읽어 오고 싶을 경우 dotenv 패키지를 설치해 읽어오면 편하다. yarn add dotenv 위 명령어를 이용해 dotenv 패키지를 설치한다. .envACCESS_TOKEN_SECRET_KEY="YamSaeng52"REFRESH_T

program-yam.tistory.com

 

인증, 인가에 대한 개념을 배우고 이를 토대로 실습으로 로그인과 회원가입 API를 작성했다.

Access Token과 Refresh Token을 배우고 이를 토대로 실습으로 직접 Access Token, Refresh Token을 발급했다.

 

📜 개인과제

17:00 ~ 21:00 - 개인과제

 

개인과제를 진행했다. 오늘은 회원가입 까지만 우선 완료하고 내일 캐릭터 생성 까지 끝낼 예정이다.

 

회원 가입 router

router.post('/sign-up', async (req, res, next) => {
    const { id, password, confirmPassword } = req.body;
    const isExistUser = await prisma.users.findFirst({
        where: {
            id,
        },
    });

    const engNumIdRule = /^(?=[a-za-z])(?=.*[0-9]).{2,10}$/;
    if (!engNumIdRule.test(id)) {
        return res.status(409).json({ message: '소문자 영어와 숫자를 조합해 입력하세요 ( 최소 2글자, 최대 10글자 )' });
    }

    if (confirmPassword === undefined) {
        return res.status(409).json({ message: '비밀번호 확인을 입력하세요' });
    }

    if (password.length < 6) {
        return res.status(409).json({ message: '비밀번호는 최소 6자 이상이 되어야 합니다.' });
    }

    if (password != confirmPassword) {
        return res.status(409).json({ message: '비밀번호와 비밀번호 확인이 일치하지 않습니다.' });
    }

    if (isExistUser) {
        return res.status(409).json({ message: '이미 존재하는 아이디입니다.' });
    }

    const hashedPassword = await bcrypt.hash(password, 10);

    const user = await prisma.users.create({
        data: {
            id,
            password: hashedPassword,
        },
    });

    return res.status(201).json({ message: `${id}로 회원가입이 완료되었습니다.` });
});

 

예전에 배운 정규표현식을 이용해 유저한테 입력받은 아이디를 판별햇다.

영어 소문자 + 숫자 조합으로 2자 이상 10자 이하 만 아이디로 등록할 수 있도록 했다.

 

2024.09.10 - [IT] - [IT] 정규표현식

 

[IT] 정규표현식

정규표현식은 어떤 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어다. 아래 표를 통해 기본적인 정규표현식의 문법을 확인할 수 있다.메타문자기능설명.문자1개의 문

program-yam.tistory.com

 

이번에 찾은 김에 글로 정리했다.

+ Recent posts