일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 1043번 거짓말 - java 분리 집합
- Java
- 18111번 마인크래프트 - java 구현
- 프로그래머스 자바
- append
- 백준 1541
- HashMap
- map
- mysql hy000 에러
- replace()
- 최소 힙 1927
- StringBuilder
- HashSet
- 백준 2473번 세 용액 - java
- 백준 2467번 용액 자바 - 이분탐색
- hash
- 백준 3190번
- dp
- 집합 11723
- 백준 1197번 최소 스패닝 트리 - java
- 백준 1647번 도시 분할 계획 - java
- StringTokenizer
- 프로그래머스 java
- 백준 1806번 부분합 java
- toUpperCase
- Stack
- 프로그래머스
- 코틀린기초
- kotlin
- ac 5430번
- Today
- Total
목록전체 글 (175)
말하는 컴공감자의 텃밭
귀여운 곰곰이가 눈에 뛰는 문제이다. 문제를 정리하면 채팅방에 사람이름이 주어진다. ENTER 입력 이후 첫번째로 등장하는 이름의 로그는 인사를 뜻한다. 이는 결국 곰곰이로 인사한다를 뜻한다. 따라서 ENTER이후로 첫번째로 등장하는 이름의 수를 (곰곰이 등장~) 체크해서 출력하면 되는 문제이다. 중복을 없앤다 를 보자마자 Hash를 떠올려야 한다. Hash 해시는 키와 데이터를 저장해주는 구조이므로 키는 1개여야 하기 때문에 중복을 허락하지 않는다. 이런 특성 때문에 암호, 메시지 인증 등에 자주 등장한다. Hash Map은 키랑 데이터를 매핑하는 구조이므로 벨류가 필요없는 우리는 Hash Set을 활용해보자 HTML 삽입 미리보기할 수 없는 소스 스캐너가 익숙해서 인풋을 스캐너로 처리하는 바라에 공백..
문제를 보자마자 조합? 이라고 생각했다. 출처: https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2608F34059202A5833 왼쪽 다리놓을 포인트와 오른쪽 다리 놓을 포인트가 주어지고, 그 사이에서 다리 를 연결할 수 있는 경우의 수 이다. 다리는 겹쳐지는것이 허용되지 않는다. 그럼 뭐 순서가 필요없는 조합이자나요~ 다리 1개만 놓을건데. 다만 수가 굉장히 크기 때문에 Big Integer을 사용하거나, 모든 경우의 수를 저장해놓고 더하는 방식으로 진행했다. 조합에서 파스칼 삼각형을 사용하여 점화식을 적용했다. 출처 : https://namu.wiki..
간단해 보여서 단계가 높지만 풀어보았다. X가 1보다 큰 제곱수로 안나뉘면 '제곱 ㄴㄴ수'라고 칭하는데 제곱수는 정수의 제곱으로 입출력이 굉장히 크기에 효율성이 중요한 문제라고 생각이 들었다. 최대한 빠르게 소수를 판별하는 알고리즘을 찾아봤다. 아레토스테네스의 체 가 있었다. 간단하게 정리하면 2부터 원하는 범위까지의 수를 나열하고 소수를 우측에 써가며 해당하는 배수를 모두 지우는 방식이다. 예시의 범위가 120까지인데 11^2 > 120 이므로 11보다 작은 배수만 지워도 충분한게 장점이다. 2,3,5,7 의 배수만 지우면 모두 소수이기 때문이다. 이전의 값들은 선행으로 처리되므로 반복연산의 시작점이 달라 효율적이라고 할 수 있다. 그렇다면 연산의 시간복잡도는 Max -min 의 모든 수에서 제곱수를 ..
지민 국왕이라니,, 잠만보려나 단순한 그리디 문제이다. B를 재배열하면 안된다고는 했지만 ㅎㅅㅎ 그냥 풀기 쉬우려면 정렬하면 그만이다. 가장 큰수와 가장 작은값끼리 곱하면 최소값이기에 sorting해서 반대로만 붙여주면 된다. ex) 1 3 2 4 와 4 2 1 3이 있다면 정렬 후 -> 1 2 3 4, 1 2 3 4 역순으로 붙여주면 된다. 1 * 4 + 2 * 3 + 3 * 2 + 4 * 1 HTML 삽입 미리보기할 수 없는 소스
단순 구현문제이다. N번째는 N의 배수의 창문을 열고 열려있으면 닫는다. 창문은 홀수번 열어야 열려있는 상태이므로 약수가 세개인 경우를 생각하다가 제곱수를 떠올렸다. 제곱수는 모두 약수가 3개이다. ex) 4 -> 4, 2, 1 / 9 - > 9, 3, 1 HTML 삽입 미리보기할 수 없는 소스 단순하게 생각했다면 메모리 문제가 있었을듯 싶다.
문제가 길다. 정리하면 1과 0으로 나뉘어진 정사각형의 색종이가 주어지고, N/2로 나누면서 정사각형이 모두 한 색인 경우 정복이 끝난경우이다. 전부 나눈 후 나뉘어진 파란색 1 과 하얀색 0의 개수를 출력하면 된다. 입력된 종이는 이차원 배열로 받아주고, 재귀함수를 쓰기위해 div 함수를 선언했다. if( (paper[x][y] - paper[x+i][y+j]) != 0 ) 를 통해서 같은 숫자끼리 영역에 존재하는지 확인했고, boolean chk 를 통해서 영역내에 다른 색상이 있는지 판단하여 존재할 시 재귀함수를 호출했다. 범위는 4등분하여 x, y, n을 다시 재귀함수에 넣어줬다. HTML 삽입 미리보기할 수 없는 소스
그리디 알고리즘 중 하나로, 최소의 동전 개수로 해당하는 수를 만드는 문제이다. 높은 단위의 동전 값부터 뺼수 있다면 뺴고, 아니면 더 작은 값을 빼는 방식이면 될듯 싶다. 먼저 입력 받은 단위를 배열에 넣고(오름차순이므로 sorting은 필요없다) for - while문을 통해서 뺄 수 있는지 여부를 판단하고 없다면 idx를 올려주었다. 빼게된다면 asnwer ++ HTML 삽입 미리보기할 수 없는 소스