일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- JPA
- IT 좀 아는 사람
- eager
- Today I Learned
- 코드트리 챌린지
- 금 채굴하기
- 최장 공통 부분수열
- 코딩테스트실력진단
- 구름톤 트레이닝
- 코드트리
- 동적 계획법
- 즉시로딩
- 완전탐색
- til
- 멀록 조명등
- 지연로딩
- 백준 #1010 #다리놓기
- 백준
- 1005 #ACM craft #백준
- 공부하기 싫어 #그래도 해야해
- TagLibraryValidator
- 코딩테스트
- 구름톤 챌린지
- @EntityGraph
- 회의실 배정
- 구름톤
- 1931번
- 행복한 수열의 개수
- 공부 기록
- spring
- Today
- Total
목록전체 글 (39)
화분
Codetree ID : otu123
어느덧 10일차이다. 이번 문제에 대한 설명은 다음 링크 ( GameJam - 구름LEVEL (goorm.io) ) 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 를 참조해주기 바란다. 문제를 풀기 위한 코드는 다음과 같다. 코드가 꽤 길다. import java.io.*; class Main { static int[] dy = {-1, 0, 1, 0}; static int[] dx = {0, 1, 0, -1}; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in..
소개 이번 문제는 N * N 크기의 2차원 배열에 K개의 폭탄이 떨어지면 상하좌우 그리고 가운데에 점수가 올라간다. 특이점은 @인 자리는 2점씩 올라가고 #인 자리는 점수가 안 오른다. 빅오표기법을 사용하면 O(K)여서 시간초과를 걱정해야 하는 문제는 아닌거 같다. 코드는 다음과 같다. import java.io.*; class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] NK = br.readLine().split(" "); int N = Integer.parseInt(NK[0]); i..

이번 구현 문제는 수가 오름차순이었다가 내림차순으로 바뀌는데 다시 오름차순으로 변하는 지 알아내는 문제이다. 이 문제를 flag 변수를 활용해서 풀었다. 배운점 StringTokenizer의 사용법에 대해 다시금 익혔다. 느낀점 flag 변수에 너무 의존하거나 잦은 사용은 깔끔하지 못한 코드를 만들기 때문에 가급적 지양하려 했는데 한두개 정돈 괜찮지 않을까 해서 사용했다. 어려웠던 점 이전 문제들보단 어려웠지만 그럼에도 쉬운 편에 속하는 문제였다..

이번 문제는 지금까지 풀어왔던 구름톤 챌린지 문제 중에서 가장 난이도가 높았다고 느꼈다. 문제를 요약하자면 N개의 숫자들을 입력 받고 그 숫자들을 2진수로 변환 했을때 1이 가장 많은 수부터 내림차순으로 정렬하고, 1의 개수가 같은 숫자가 있을 경우 10진수 값으로 내림차순 하는 문제이다. 이 문제를 풀기 위해 우선 2진수로 변환했을때 1의 갯수 별로 10진수 숫자들을 저장한다. 이때 사용한 자료구조는 TreeMap이다. key값은(1의 개수는) 1부터 20까지 있고 각 key에 해당하는 10진수들을 value인 ArrayList에 담는다. 그 다음으로 TreeMap을 역순으로 정렬한다.(1->을 20->1로) 그리고 TreeMap에서 key마다 저장되어 있는 ArrayList를 내림차순으로 정렬한 후,..
몽고db에서 db를 생성하면 아래의 문구를 copy하여 코드에 붙여넣으면 된다. mongodb+srv://:@cluster0.vcxyf.mongodb.net/myFirstDatabase?retryWrites=true&w=majority 그런데 이때 주의해야할 점이 있다. 패스워드를 작성할때 특수문자를 넣지 않도록 하는 것이다. 나같은 경우 패스워드에 특수문자 '@'를 넣었고 실행해보았는데 APIError가 떴다. 특수문자를 제외하고 비밀번호를 생성하여 입력하였더니 정상적으로 작동하였다.
이번 문제는 최장 공통 부분수열(LCS:Longest Common Subsequence)이다. 어떻게 동적계획법을 이용해 풀지 고민하다가 테이블에 어떻게 기록할진 떠올렸으나 코드로 구현할 방법은 떠오르지 않아 결국 인터넷을 참고하였다. 이 문제에 어떻게 접근했냐하면 우선 큰 문제를 해결하기 위한 공통된 작은 문제를 찾아내려 했다. 앞에서부터 공통된 문자를 찾기보단 뒤에서부터 찾으려 했다. 그 결과 다음과 같은 테이블을 완성했다. A C A Y K P C 3 A 4 2 P 1 C 3 A 2 2 K 1 가장 우측 하단 위치에서부터 왼쪽 행과 윗쪽 열의 안쪽에 있는 수를 증가시켜 나간다. 이렇게 접근하면 LCS를 만족하는 문자의 개수를 알아내는 실마리를 찾은거 같았다. 하지만 문제가 있었다. 어떻게 저 가장 ..
문제 출처 : https://www.acmicpc.net/problem/12865 배낭 문제는 다이나믹 프로그래밍의 대표적인 문제 중 하나이다. 대학교 알고리즘 수업을 들을 때 풀어봤던 문제라서 풀이 전략을 떠올리는 것은 어렵지 않았으나 세부적인 코드를 짜는데 시간이 조금 걸렸다. 나 같은 경우 2차원 배열의 테이블을 만들어서 풀었는데 이같은 풀이 방법으로 더 간단히 짤 수도 있을거라 본다. 한편 백준에서 다른 사람들이 푼 걸 보면 가끔 말도 안되게 간단하게 풀어서 제출하는 걸 심심찮게 보는데 이 문제도 그렇다. 동적 프로그래밍의 '프로그래밍'의 뜻은 우리가 익히 알고 있는 뜻이 아닌 표(테이블)을 의미한다. 몇차원이든 표에 기록하고 그 기록들을 참조해서 문제를 해결해나간다. 문제를 푸는 방식에는 보텀업..