본문 바로가기

반응형

분류 전체보기

(137)
[Algorithm] 백준 1463 1로 만들기 c++ https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이 DP N에서 1을 만드는 방법을 생각하지 않고, 1에서 N을 만드는 방법으로 구현한다. (bottom-up) N = 1인 경우 f[1]에 0을 넣고(basecase) 1에서 +1, *2, *3을 했을 때의 값인 f[2], f[3]에 1(f[1] + 1)을 넣는다. 즉, f[i+1] = f[i*2] = f[i*3] = f[i] + 1 이다. 다만 i보다 더 큰 수(j)로부터 최소의 횟수를 만들 수 있으므로 min(f[i] + 1(현재값), f[j] + 1)으로 값을 업데이트한다. 주의사항) 1에서 N이 되는..
[Sendbird를 활용한 웹 채팅] 7. sendbird connect (레이아웃) 1. Sendbird connect 센드버드 api를 사용하기 위해서는 우선적으로 현재 사용자가 센드버드와 연결되어 있어야 한다. 로그인 여부를 판단한다고 생각하면 될 듯하다. 이를 위해 존재하는 것이 connect 메소드이고 이를 레이아웃 컴포넌트에 설정해야 한다. Components/Layout.js 현재 접속한 사용자가 로그인 되어 있는 경우 connect한다. 로그인되어 있지 않은 경우 로그인 페이지로 리다이렉트한다. import React, { useCallback, useEffect, useMemo } from "react"; import { Redirect } from "react-router-dom"; import styled from "styled-components"; import Pr..
[Sendbird를 활용한 웹 채팅] 6. 로그인 시행착오 (CORS, Failed to load resource: the server responed with a status of 404 (Not Found)) localhost가 아닌 실제 도메인 주소로 배포했을 때 발생했던 문제들 1. CORS 문제 편의상 로그인 API 주소를 https://www.chat.co.kr/login라 한다. 로컬에서 테스트 🔒 로그인 API 요청 시 CORS 문제 발생 axios .post(`https://www.chat.co.kr/login`, { id: userId, pw: userPw, }) .then((res) => console.log(res)); 🔑 package.json 설정 후 url 수정 package.json에 proxy 설정하기 { "proxy": "https://www.chat.co.kr", } 요청 url 변경하기 axios .post(`/login`, { id: userId, pw: userPw, }) ..
[Algorithm] 백준 9184 신나는 함수 실행 c++ https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 풀이 DP 주어진 재귀함수를 DP로 구현하면 된다. a = 0 or b = 0 or c = 0 부터 a = 20 or b = 20 or c = 20까지 bottom-up 방식으로 3차원 배열을 채운다. a 20인 경우 각각 반환값을 지정한다. 그 외의 경우에는 w[a][b][c]를 반환한다. 소스코드 #include using namespace std; int w[21][21][21]; int dp(..
[Algorithm] 백준 2580 스도쿠 c++ https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 풀이 백트래킹 스도쿠를 입력받을 때 빈 칸을 vector v에 저장한다. v를 통해 빈칸의 위치를 얻고, 빈칸에 1 ~ 9 사이의 숫자를 넣어본다. 현재 넣은 숫자가 스도쿠의 규칙을 만족한다면 다음 빈칸을 채우러 간다. (백트래킹) 현재 넣은 숫자가 스도쿠의 규칙을 만족하지 않는다면 그 칸을 비워준다. (0으로 초기화) 스도쿠의 규칙을 만족하는지의 여부는 isSetNum 함수로 판단한다. 빈칸의 ..
[Algorithm] 백준 9663 N-Queen c++ https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 백트래킹 체스판의 행을 기준으로 i번째 행에 Queen을 놓으면, i+1번째 행으로 넘어간다. 배열 x는 인덱스는 체스판의 row(행)를 의미하고, 값은 체스판의 col(열)을 의미한다. 예를 들어, x[1] = 2가 의미하는 것은 "체스판[1][2] 자리에 Queen이 있다"는 것이다. i+1번째 행에 Queen을 놓을 자리가 없다면 i번째 행으로 다시 돌아가 다음 열부터 탐색한다. (백트래킹) 체스판[r..
[Sendbird를 활용한 웹 채팅] 5. 소셜 로그인 - 네이버, 카카오 1. 로그인 과정 기능 개발에 중점을 두고 제공받은 자체 로그인 API이기 때문에 현재는 보안에 취약한 상태이다. 그래서 토큰이 아닌 유저 id를 받아 로컬 스토리지에 저장한 방식으로 진행된다. 소셜 로그인 소셜 로그인 -> 로그인 성공 시 받은 토큰을 자체 API로 넘기기 -> 인증 성공 시 유저 id 로컬 스토리지 저장 & 메인 페이지로 이동 자체 로그인 이메일 & 비밀번호 입력 -> 자체 API -> 로그인 성공 시 유저 id 로컬 스토리지 저장 & 메인 페이지로 이동 2. 네이버 로그인 1. API 신청 https://developers.naver.com/products/login/userguide/userguide.md 접속 후 오픈 api 신청하기 로그인 오픈 API 서비스 환경 -> PC 웹..
[Sendbird를 활용한 웹 채팅] 4. 라우팅 & 전체 스타일 1. 라우팅 Components/Router.js import React from "react"; import { BrowserRouter, Route, Redirect, Switch } from "react-router-dom"; import GroupChat from "../Pages/GroupChat"; import OpenChat from "../Pages/OpenChat"; import Chatting from "../Pages/Chatting"; import Login from "../Pages/Login"; import MailLogin from "../Pages/MailLogin"; const Router = () => ( ); export default Router; 2. 글로벌 스타일 ..

반응형