일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스 java
- 18111번 마인크래프트 - java 구현
- 백준 1043번 거짓말 - java 분리 집합
- Java
- 백준 1541
- ac 5430번
- 백준 2467번 용액 자바 - 이분탐색
- 백준 2473번 세 용액 - java
- 코틀린기초
- toUpperCase
- 백준 1197번 최소 스패닝 트리 - java
- 최소 힙 1927
- StringBuilder
- append
- map
- hash
- HashSet
- 백준 1647번 도시 분할 계획 - java
- 백준 14938번 서강그라운드
- 백준 1806번 부분합 java
- 프로그래머스
- Stack
- replace()
- 프로그래머스 자바
- kotlin
- mysql hy000 에러
- StringTokenizer
- 백준 3190번
- dp
- HashMap
- Today
- Total
목록알고리즘/Backjoon - Java (79)
말하는 컴공감자의 텃밭
설명도 필요없다 후딱 짜봅시다. HTML 삽입 미리보기할 수 없는 소스 빈도를 Map을 활용했는데 사용이 어색해서 많이 틀렸었군요.. 조건이 또 여러개라면 두번째로 작은 값 때문에 틀렸네 안써도 풀거같은데.. 그리고 테스트 좀 잘하고 올리지 졸렸나 지금 생각으로는 산술평균 : Sum / N 중앙값 : sorting 후 N/2 idx 값 최빈값 : sorting 후 연속적으로 가장 많이 나오는 값 저장, List에 넣은 후 size() >= 2일 경우 -> 정렬 후 get(1) 범위 : sorting 후 최소값, 최대값 차 했을거 같네오
조건을 정리하면 M의 길이보다 작은건 제외, 자주나올수록, 단어가 길 수록 앞으로. 사전순으로 정리하면 된다. 단어는 1번만 나오게 해야하니까 Hash 구조를 쓰고, 얼마나 나왔는지 확인도 필요하므로 HashMap구조를 사용했다. 단어를 키로, 나온 수를 값으로 가져줬다. 그럼 뭐 쉽죵 HTML 삽입 미리보기할 수 없는 소스 기존에 편해서 scanner을 쓰고있는데 입력값이 워낙에 커서 버퍼리더로 받아줬다.. 얼른 습관 고쳐야하는데 코테보는 이후로 바로 고쳐 볼 예정이다
요즘은 문제 지문이 긴걸 위주로 풀려고하게 된다. 아무래도 코테 문제는 지문이 길지 않을까..? 하는 혼자 생각때문에 호호 먼저 근손실은 마음이 아프다,, 운동 못한지가 오래되서인지 문제 제목보고 홀린듯 풀게 되었다. 지문을 읽게되면 3대 500에서 (ㄷㄷ) 매일 매일 K만큼 중량이 줄게된다. 다만 키트가 있어서 키트를 꽂으면 중량이 즉시 증가하는데 이 대학원생은 욕심쟁이라 늘 500이상을 유지하고 싶어한다. 어떤 시점에서 봐도 500보다 작지 않도록 키트 순서를 정해주면 된다. 이 순서 경우의 수를 출력하면 되는 문제다. 막상 지문만 길지 짧게 표현할 수 있는 문제였다. 500에서 K * N 만큼 감소하되 키트를 사용하여 500 언더로 안떨어지게 하면 되는 문제다.. 모든 경우의 수를 출력하면 되기에 ..
또 귀여운 캐릭터가 등장 했다. 문제를 요약하면 한줄에 이름 두개가 공백으로 주어지고, 그 중 한사람이 총총의 춤을 추고있다면 너무 흥이나서 만난 사람도 춤을 추게 된다. 바이러스 이런거였으면 다른 분위기 였을거 같다.. 초기에는 chongchong이만 춤을 알고 있고 동명이인은 없으며 대소문자를 구분한다.\ 시작해봅시다. 중복이 없어야 하면? Hash. 다른 요소가 없기 때문에 Hash set에 넣어주고 Hash.size()가 답이겠네오 HTML 삽입 미리보기할 수 없는 소스
귀여운 곰곰이가 눈에 뛰는 문제이다. 문제를 정리하면 채팅방에 사람이름이 주어진다. 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 삽입 미리보기할 수 없는 소스