728x90
반응형

전체 글 154

[BOJ] 백준 4179 불! c++ (bfs)

문제 출처 : https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 풀이 이 문제는 불과 지훈이의 이동경로를 비교를 해야한다. 따라서 먼저 불의 시간 별 이동경로를 저장하는 배열을 만들어 계산한 뒤, 지훈이가 이동 가능한지 비교한다. 불 이동 경로 초기 입력 시 fire 배열은 INF로 초기화하고, 처음 불이 있던 자리만 0으로 저장한다. bfs로 기존 배열 값보다 값이 작으면 갱신하고 큐에 푸시해준다. int fire[1000][10..

Tech/Algorithm 2023.01.21

[Spring] jasypt로 암호화하기, docker, ec2 및 CI/CD 연동하기

스프링 세팅 시 민감한 정보들이 많다. (rds db 주소 등) jasypt로 간편하게 암호화 할 수 있다!! 1. build.gradle 설정 아래 부분을 추가해준다. testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter', version: '3.0.4' 2. Jasypt config 설정 필자는 JasyptConfig로 네이밍해 설정하였다. 여기서 중요한 부분은 encryptKey 은 노출하면 안된다! package com.mews.mews_backend.global.config;..

Tech/Spring 2023.01.19

[BOJ] 백준 16562 친구비 c++ (유니온 파인드)

문제 출처 :https://www.acmicpc.net/problem/16562 16562번: 친구비 첫 줄에 학생 수 N (1 ≤ N ≤ 10,000)과 친구관계 수 M (0 ≤ M ≤ 10,000), 가지고 있는 돈 k (1 ≤ k ≤ 10,000,000)가 주어진다. 두번째 줄에 N개의 각각의 학생이 원하는 친구비 Ai가 주어진다. (1 ≤ Ai ≤ 10, www.acmicpc.net 풀이 불쌍한 준석이,,, 우선 완전탐색으로 생각했으나 유니온 파인드로 해결해야하는 문제임을 깨달았다. 유니온 파인드는 아래 패턴을 기억해야 할 것 같다. 1. 같은 집합으로 묶어주는 함수(unionParent) root를 찾아주는 함수(getParent)로 가져온 후 서로의 부모를 지정해준다. void unionPar..

Tech/Algorithm 2023.01.19

[BOJ] 백준 2195 문자열 복사 c++ (문자열)

문제 출처 : https://www.acmicpc.net/problem/2195 2195번: 문자열 복사 첫째 줄에 S, 둘째 줄에 P가 주어진다. S와 P는 영어 대소문자와 숫자로만 되어 있다. S의 길이는 1,000을 넘지 않으며, P의 길이는 1,000을 넘지 않는다. copy함수만을 이용하여 S에서 P를 만들어낼 수 www.acmicpc.net 풀이 최소한의 copy를 사용해 s를 p로 만들 때, 사용 횟수를 출력하는 문제이다. p를 반복문을 돌며 s에서 같은 부분을 찾은 후, 만약 같다면 그 뒤에도 같은지 계속 검사한다. 가장 길게 검사한 부분을 저장해 idx에 더해준다. 코드 #include using namespace std; string s, p; int main(void) { ios::s..

Tech/Algorithm 2023.01.16

[프로그래머스] 이모티콘 할인행사 c++ / 2023 KAKAO BLIND RECRUITMENT (중복 조합 dfs)

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 카카오톡의 이모티콘 목표 조건 이모티콘 플러스 서비스 가입자를 최대한 늘리는 것. 이모티콘 판매액을 최대한 늘리는 것. 을 최대한으로 달성했을때 이모티콘 플러스 서비스 가입자수, 이모티콘 매출액을 구하는 문제이다. 처음 문제를 보고 완전탐색 말고 다른 방법을 고민했는데, 우선 완전탐색으로 정답 확인을 받았다. 이 문제의 큰 힌트는 아래부분이다. 이모티콘마다 할인율은 다를 수 ..

Tech/Algorithm 2023.01.15

[BOJ] 백준 15591 MooTube (Silver) c++ (그래프 이론, bfs)

문제 출처 : https://www.acmicpc.net/problem/15591 15591번: MooTube (Silver) 농부 존은 1번 동영상과 2번 동영상이 USADO 3을 가지고, 2번 동영상과 3번 동영상이 USADO 2를 가지고, 2번 동영상과 4번 동영상이 USADO 4를 가진다고 했다. 이것에 기반해서 1번 동영상과 3번 동영상의 www.acmicpc.net 풀이 문제가 길고 영어 번역본이라 거부감이 들 수 있겠으나.. 결론은 연결되어 있는 그래프를 탐색하는 대표적인 그래프 탐색 문제이다. 이런 그래프 문제는 보통 아래와 같은 방법으로 처리한다. vector를 배열로 선언한다. a b가 연결되어 있을 경우 서로 푸시한다. v[a].push_back(값), v[b].push_back(값)..

Tech/Algorithm 2023.01.15

[BOJ] 백준 1717 집합의 표현 c++ (유니온 파인드)

문제 출처 : https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 풀이 두 집합 a와 b가 같은 집합에 포함되어 있는지 확인하는 문제이다. 처음에 bfs로 완전탐색으로 구현하였으나, 시간초과가 발생하였다. 따라서 유니온 파인드를 통해 해결해야 한다. 처음 모든 수의 부모를 나타내는 배열 parent를 선언한다. 이 parent 배열은 항상 부모중 가장 작은 값을 가진 노드로 갱신해준다. getParent 부..

Tech/Algorithm 2023.01.14

[Docker] docker-compose 사용 시 컨테이너는 정상 배포되나 ec2에서 접속이 안될때

docker-compose.yaml 파일을 확인해보자! expose와 ports의 포트번호에 ""을 넣어야 한다. version: "3" services: spring: container_name: spring image: 아이디/레포지토리이름 expose: - "8080" ports: - "8080:8080" 그 후 ec2 터미널에 curl localhost:포트번호 로 로컬로 정상 접속하는지 확인한 후, ec2 url로 접속해 확인해보자!

Tech/Docker 2023.01.14

[BOJ] 백준 1092 배 c++ (그리디)

문제 출처 : https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 풀이 박스를 배로 옮기는 시간의 최솟값을 출력하는 문제이다. 크레인과 박스를 내림차순으로 정렬한 후 박스를 담을 수 있는 경우 vector를 삭제해주면 된다. (그리디 알고리즘) 코드 #include using namespace std; int N, M; int ans; int main(void) { ios::sync_with_stdio(false); cin.tie(..

Tech/Algorithm 2023.01.12

[BOJ] 백준 20055 컨베이어 벨트 위의 로봇 c++ (구현)

문제 출처 : https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 풀이 이동하는 벨트에서 로봇 공정이 얼마나 진행될 수 있는지 판단하는 구현 문제이다. 처음 내구도, 로봇 여부를 pair vector로 받아 구현하였고 문제에서 제시된 단계대로 구현하였다. 1. 벨트 이동 deque등으로 직접 옮기는 방법도 있으나, idx를 옮기는 방식으로 구현하였다. 시계방향으로 벨트가 이동하므로 idx를 왼쪽으로 한칸 옮기면 된다. 여기서 ..

Tech/Algorithm 2023.01.11
728x90
반응형