목록분류 전체보기 (234)
정화 코딩

https://www.acmicpc.net/problem/30805 구현할 때 신경쓸 게 좀 많아서 번거롭다고 느낀 문제였다. 우선 나는 다음과 같이 구현하였다. 일단 이 문제는 그리디로 풀 수 있다. 왜냐하면 구해야 하는 것이 "사전 순 최대" 공통 부분 수열이기 때문이다. 길이만 가장 길어야 하는 거면 dp로 풀어야 하지만, 사전 순으로 했을 때 가장 나중인 것을 선택하면 되므로 그리디하게 공통되는 최댓값을 쭉 선택하면 된다. 다시 정리하자면, 공통되는 수 중 최댓값을 찾고, 그 수의 오른쪽을 기준으로 또 다시 공통되는 수 중 최댓값을 찾고... 를 반복하면 된다. 구체적인 구현은 이렇다. 우선 a 배열에서 최댓값을 찾는다. 찾은 최댓값이 b 배열에도 있는지 확인한다.만약 없다면 아까 a 배열..

Database 연결MySQL Workbench에서 preview라는 이름의 스키마를 새롭게 만들어준다. 지난 포스팅에서 spring initializer를 통해서 프로젝트 초기 세팅을 했었는데, 그걸로 만들면 기본적으로 application.properties 파일로 만들어진다. 나는 application.properties 파일을 삭제하고 application.yml 파일을 새로 생성해주었다. spring: datasource: url: jdbc:mysql://localhost:3307/preview username: [데이터베이스 유저네임] password: [데이터베이스 비밀번호] driver-class-name: com.mysql.cj.jdbc.Driver이렇게 적어..

문제 상황ExceptionAdvice.java 파일을 작성하는 도중에 오류가 났다. Cannot resolve symbol 'validation' 이라고 뜨면서 빨간색으로 표시된다.분명 다른 프로젝트에서 정상적으로 사용하던 걸 그대로 복붙한건데 왜 오류가 나는걸까? 원인찾아보니 Spring Boot 2.2.x 버전 이하까지는 spring-boot-starter-web 안에 Validation 포함되어 있었지만 2.3.x 버전 이상부터는 spring-boot-starter-web와 분리되었다고 한다. 그래서 직접 추가해주어야 한다. 해결 방법build.gradle 파일에서 war 플러그인을 추가해준다. 그 후 build.gradle 파일에서 dependencies에서 위의 코드를 추가해준다. 이렇게 하니..

https://www.acmicpc.net/problem/27966 #include using namespace std;int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long n; cin >> n; long long ans = (n - 1) + (n - 1) * (n - 2); cout 모든 정점 쌍에 대해서 두 정점 사이 거리의 합이 최소가 되도록 하기 위해서는 하나의 정점을 중심에 두고 나머지 모든 정점을 그 중심 정점에 연결하도록 트리를 구성하면 된다. 이 사실만 알면 쉽게 풀 수 있었던 문제. 아 long long으로 해야 함! (AC)

https://www.acmicpc.net/problem/31460 #include #include using namespace std;int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while (t--) { int n; cin >> n; if (n == 1) { cout 011121122112221122221...이렇게 규칙만 찾으면 쉽게 풀 수 있는 문제. 0도 11의 배수임에 주의하자. (AC)

https://www.acmicpc.net/problem/23817 이 문제 풀 때 고수들이 옆에 있었어서 그들이 걍 다 해줌. 저는 풀이를 듣고 음 그렇구나. 천재다. 구현해볼게. 했음다. 첫번째 풀이. vst 배열: 현재 위치 (i, j) + 어느어느식당 방문했는지 (길이가 20인 비트스트링) 길이가 20인 비트스트링 → 2^20 하면 너무 큼 → 근데 어차피 최대가 5개 켜지는 거임 → 2^20 중에 안 쓰는 게 너무 많음 (어떤 걸 안 쓰는지 모름) → map 이용 vector>> → 최단 거리를 두번째 int에 저장하는 셈 vector>> (= vector>>) → 방문 했는지 안 했는지를 bool에 저장하는 셈 근데 이렇게 하면 터짐... 두번째 풀이.모든 식당과 식당 (+시작점) 사이의 거..

https://www.acmicpc.net/problem/13172 이 문제의 핵심을 정리하면 아래와 같다. 기약분수 a/b를 다음과 같이 하나의 정수로 표현할 수 있다. 이 때 X는 1,000,000,007과 같은 큰 소수이다.b^(-1)은 b의 모듈러 곱셈에 대한 역원인데, 다음과 같이 계산할 수 있다. 이 정도만 알면 문제를 풀 수 있다. 이제 구체적으로 어떻게 구현할지 생각해보자.한 줄에 분모와 분자 순서대로 한 쌍의 분수가 들어온다. 각 분수에 대해 a * b^(-1) mod X 를 구하면 된다. 그리고 모든 값들을 마치 확률을 더하듯 그냥 더해주면 된다. 내가 헷갈렸던 점은 기약분수 a/b에 대해서 저렇게 계산해야 된다고 하길래 들어온 분모와 분자에 대해서 우선 기약분수 형태로 만들어줘야..