전체 글 107

[백준/C++] 4889번 안정적인 문자열

🤔문제 이해 괄호의 짝을 맞추기 위해 최소한으로 바꾸는 괄호의 개수를 구하는 문제이다. 🔥풀이🔥 짝이 맞는 괄호는 stack을 이용해 여는 괄호면 넣고 닫는 괄호면 stack의 top이 여는 괄호면 pop을 해주고, 닫는 괄호면 그냥 push해주는 식으로 처리해주었다. 바로 짝을 지어주나 나중에 짝을 지어주나 바꾸는 괄호의 개수는 변하지 않는다. 예를 들어 앞서 든 예시 }{{{의 경우 첫번째와 두번째, 네번째를 바꿔 {}{}을 만드는 것과 첫번째 세번째 네번째를 바꿔 {{}}을 만드는 경우에서 바꾸는 괄호의 개수가 동일함을 알 수 있다. 따라서 그리디 알고리즘을 사용해 처음 괄호는 무조건 여는 괄호로 만들어주고, 다음 괄호는 닫는 괄호로 만들어 주면서 문자 2개씩 처리해주었다. #include #inc..

백준/C++ 2022.10.27

[백준/C++] 21610번 마법사 상어와 비바라기

🤔문제 이해 그냥 단순 구현 문제로 잘 읽고 조건에 맞춰 비구름을 옮겨주면 되는 문제였다. 🔥풀이🔥 (i, j)에 위치한 바구니에 담긴 물의 양을 나타내는 배열 map[i][j] 명령 과정 3번에서 사라진 구름을 표시하는 배열 visited[i][j] 명령에서 주는 방향을 의미하는 di[k]와 dj[k] 거리가 1인 대각선을 의미하는 diag_i[k]와 diag_j[k] 구름의 위치를 저장할 큐 cloud m번의 명령마다 아래 과정을 수행해준다. 1. cloud의 front 비구름의 위치에 방향 * 거리값을 더해주고 격자크기(N)만큼 나머지 연산 2. 계산된 위치값이 음수이거나 0이면 +N 3. pop해주고 계산된 위치값의 비의 양을 +1하고 위치값을 cloud에 push 4. 옮겨진 비구름에 대해 대각..

백준/C++ 2022.10.06

[백준/C++] 24524번 아름다운 문자열

🤔문제 이해 문자열 S에 나온 문자를 중복없이 순서대로 사용해서 문자열 T를 만드는 경우의 수를 구하는 문제이다. 🔥풀이🔥 출력값을 저장할 ans와 알파벳별로 queue 자료구조 q를 전역변수로 선언했다. 입력받은 문자열 S의 각 문자에 해당하는 q에 문자의 위치를 넣어주었다. S의 문자 순서대로 T를 만들어야하기 때문에 일단 S에서 T를 만들 문자가 있어서 뽑고 나면 S에서 그 문자보다 뒤에 오는 문자 중에서 T의 그 다음 문자를 뽑아야 하므로 prev보다 더 큰 인덱스 값을 가지는 문자를 찾을 때까지 q를 pop해준다. 만약 q가 비어있으면 문자열 T를 만들 수 없으므로 T를 찾는 연산을 중단한다. cnt값을 이용해 T의 문자를 하나씩 찾을 때마다 ++해주고 T의 size와 동일해지면 출력값 ans를..

백준/C++ 2022.10.05

[백준/C++] 9663번 N-Queen

🤔문제 이해 퀸은 자신이 위치한 행과 열, 그리고 양쪽 대각선을 다 공격할 수 있으므로 퀸이 공격할 수 없는 공간에 또 다른 퀸을 놓으며 N개의 퀸을 모두 놓는 방법의 수를 구하는 문제이다. 체스를 몰라서 따로 검색해보고 문제를 이해할 수 있었다.(문제가 불친절..) 🔥풀이🔥 한 행에서 퀸을 둘 수 있는 열에 퀸을 놓아보고 그 때의 공격범위를 업데이트해줬다가 리턴하면 공격범위를 그 전으로 초기화해주고 해당 행에서 다음 가능한 열에 두는 경우로 넘어간다. 변수 - length : 퀸이 공격할 수 있는 열의 위치를 비트마스크로 표현 - diag1 : 퀸이 공격할 수 있는 오른쪽위방향 대각선을 비트마스크로 표현 - diag2 : 퀸이 공격할 수 있는 왼쪽위방향 대각선을 비트마스크로 표현 재귀함수 void So..

백준/C++ 2022.08.16

[백준/C++] 16457번 단풍잎 이야기

🤔문제 이해 각 퀘스트당 필요한 스킬을 다 사용가능할 때 그 퀘스트를 깰 수 있다. 2n개의 스킬 중 n개만 골랐을 때 최대로 많이 깰 수 있는 퀘스트의 개수를 출력하면 된다. 조건 키의 개수 : n 퀘스트의 개수 : m (1 ~ 100) 퀘스트 당 스킬 수 : k (1 ~ n) 스킬의 번호 ( 1~2n) 🔥풀이🔥 2n개의 스킬 중 배치할 스킬 n개를 골랐을 때 깰 수 있는 퀘스트의 개수 중 가장 큰 값을 출력하게 했다. 변수 - quest[i] : i번째 퀘스트에서 필요한 스킬의 번호를 비트로 표현 재귀함수 void Solve(int i, int d, int cnt) - 현재 상태 : 현재까지 정한 스킬을 비트로 나타내는 i, 몇번째 스킬까지 처리해줬는지를 나타내는 d, 정한 스킬의 개수 cnt - 다..

백준/C++ 2022.08.12

[백준/C++] 2239번 스도쿠

🤔문제 이해 행과 열, 그리고 3x3의 작은 사각형 안에 1~9까지의 수가 중복없이 나오게 보드를 짜는 문제이다. 조건 보드 : 9 x 9 시간 : 2초 메모리 : 256MB 🔥풀이🔥 백트래킹 방식으로 값이 비어있는 부분에 넣을 수 있는 수 중에서 가장 작은 수부터 넣어보면서 처음으로 보드가 숫자로 다 채워질 수 있을 때를 출력하면 된다. 변수 - bool width[i][num] : i번째 행에 num의 존재 유무 - bool length[i][num] : i번째 열에 num의 존재 유무 - bool square[i][num] : i번째 사각형에 num의 존재 유무 - square의 경우 좌표가 (i, j)일 때 (i/3)*2 + (j/3)을 계산한 값이 몇번째 사각형인지 나타낸다. 재귀함수 solve..

백준/C++ 2022.08.11

[CS/Network] 세션(Session) & JWT

🌐 Authentication & Authorization Authentication은 인증이라는 뜻으로 특정 서비스에 일정 권한이 주어진 사용자임을 ID, password로 인증받는다는 것을 의미한다. 간단히 말하자면 로그인이다. Authorization은 인가라는 뜻으로 로그인을 통해 한번 인증을 받은 사용자가 이후 서비스의 여러 기능들을 사용할 때 로그인되어 있음을 확인받고 사용허가를 해준다. 즉, 로그인된 상태를 유지시켜주는 것이 인가이다. 🌐 세션(Session) 사용자가 로그인에 성공하게 되면 서버가 '세션 표딱지'라는 것을 출력해 세션 표딱지의 반은 사용자의 브라우저로 전송하고 반은 서버의 메모리나 하드디스크,데이터베이스에 저장한다. 사용자의 브라우저로 간 세션 표딱지의 절반은 Session..

CS/Network 2022.08.08

[공부/Spring] 에러 - Could not get lock /var/lib/dpkg/lock-fronted

📌Could not get lock /var/lib/dpkg/lock-fronted 에러 다른 프로세스가 진행중이라 발생하는 에러이다. 진행중인 프로세스를 죽여주면 해결된다. 방법 1) sudo killall apt apt-get 방법 2) 방법 1을 실행했는데 진행중인 프로세스가 없다고 뜨면, 디렉토리를 하나 하나 삭제해준다. sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock* 다음 명령어까지 실행해주면 해결된다. sudo dpkg --configure -a sudo apt update

공부/Spring 2022.07.29

[공부/Spring] #4 | 서버 접속 간편화

✅ 운영체제는 MacOS(M1) 사용중입니다. ✅ 이전 포스트 [공부/Spring] #3 | RDS 생성 및 연결 ✅ 운영체제는 MacOS(M1)을 사용합니다. ✅ 이전 포스트 [공부/Spring] #2 | 보안그룹 설정, 고정 IP 주소 설정 ✅ 운영체제는 MacOS(M1)을 사용합니다. ✅ 이전 포스트 [공부/Spring] EC2 인스턴스 생성 및 연 yulee.tistory.com ☘️ 서버 접속 간편화 EC2 인스턴스에 SSH로 접속할 땐 인스턴스 정보에서 연결 버튼을 클릭해 SSH 클라이언트 항목에서 예에 있는 명령어를 복사해 실행시키면 된다고 전에 포스팅한 적이 있는데 호스트를 등록해 더 간편화하고자 한다. 1. 다운 받은 키 페어 관리하기 1-1. 키 파일 권한 변경 chmod 400 "키 ..

공부/Spring 2022.07.28

[공부/Spring] #3 | RDS 생성 및 연결

✅ 운영체제는 MacOS(M1) 사용중입니다. ✅ 이전 포스트 [공부/Spring] #2 | 보안그룹 설정, 고정 IP 주소 설정 ✅ 운영체제는 MacOS(M1)을 사용합니다. ✅ 이전 포스트 [공부/Spring] EC2 인스턴스 생성 및 연결 ✅ 운영체제는 MacOS(M1)을 사용합니다. ☘️ EC2 인스턴스 생성하기 1. 인스턴스 시작 AWS에 가입해주고 yulee.tistory.com ☘️ RDS 생성 1. RDS 생성 1-1. 데이터베이스 생성 RDS는 AWS에서 지원하는 관계형 데이터베이스로 인스턴스에서 데이터베이스를 사용하는 것보다 편하고 용량도 크게 쓸 수 있다. AWS에서 RDS를 검색하고 왼쪽 메뉴에서 데이터베이스 클릭 후 데이터베이스 생성을 누른다. 1-2. 엔진 옵션 사용할 MySQL..

공부/Spring 2022.07.28
728x90