일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mysql hy000 에러
- map
- HashMap
- 백준 1197번 최소 스패닝 트리 - java
- kotlin
- ac 5430번
- 백준 14938번 서강그라운드
- StringBuilder
- 백준 1647번 도시 분할 계획 - java
- replace()
- 18111번 마인크래프트 - java 구현
- 백준 2467번 용액 자바 - 이분탐색
- hash
- append
- 백준 1541
- 백준 1043번 거짓말 - java 분리 집합
- 프로그래머스
- 프로그래머스 java
- 백준 2473번 세 용액 - java
- 프로그래머스 자바
- dp
- StringTokenizer
- 백준 3190번
- toUpperCase
- 백준 1806번 부분합 java
- 최소 힙 1927
- HashSet
- 코틀린기초
- Stack
- Java
- Today
- Total
목록알고리즘/Backjoon - Java (79)
말하는 컴공감자의 텃밭
그리디 알고리즘 중 하나로, 최소의 동전 개수로 해당하는 수를 만드는 문제이다. 높은 단위의 동전 값부터 뺼수 있다면 뺴고, 아니면 더 작은 값을 빼는 방식이면 될듯 싶다. 먼저 입력 받은 단위를 배열에 넣고(오름차순이므로 sorting은 필요없다) for - while문을 통해서 뺄 수 있는지 여부를 판단하고 없다면 idx를 올려주었다. 빼게된다면 asnwer ++ HTML 삽입 미리보기할 수 없는 소스
블로그 정리가 오래되어서 몰아서 정리하는 중인데 아무래도 예전에 풀었던걸 다시보면 다른 로직으로 생각이 들기도 하는것 같다.. 정리 잘해둬야징 문제를 정리하면 숫자가 주어지고, 실수가 나올때 마다 0을 외쳐서 실수임을 말한다. 스택 자료구조를 사용해서 간단하게 풀수도 있고, 리스트로 값을 넣고 0 나오면 이전걸 지우는 방법도 가능할 듯 싶다. Stack 사용 코드 HTML 삽입 미리보기할 수 없는 소스 List 사용 코드 HTML 삽입 미리보기할 수 없는 소스 간단쓰~ * List 는 add, remove로 추가 삭제 가능. 값 얻는건 get 사용 * Stack은 push, pop으로 추가 삭제 가능. 상단 확인은 peek();
문제를 보게되면, 채팅방 기록 개수가 첫줄에 주어지고, 이후로 사용자의 닉네임인 문자열이 주어진다. 처음에 누군가가 들어오면 곰곰티콘으로 인사를 하고, 같은 닉네임이 추가로 나온다면 일반 채팅이다. 곰곰티콘이 얼마나 사용되었는지 출력하라. 간단하게 중복을 체크하면 되는 문제였다. HashSet이 떠올랐고 바로 작성했다. 조건을 str이 ENTER라면 clear해주고, 아니고 !contains라면 Hash에 add하고, answer ++ 해주었다. HTML 삽입 미리보기할 수 없는 소스 근데 이상하게 특정 input에서 오류가 발생해서 틀리고 말았다. 세는곳도 없고 반례가 있나 생각했는데 첫줄이 씹히는것 같았다. 아무래도 nextInt()로 받고, 다음부터 str로 받아서 공백이 들어갔었나보다 K를 받고,..
A와 B가 케이크를 둘레에서 둘레로 한번씩 자른다. 조각이 K 넘게 자른사람이 케이크 위 맛난 딸기를 냠념냠 가능하다. 따라서 A와 B는 모두 최선을 다해 자신이 K 조각이 넘길 바라며 최선을 다한다. 처음에는 규칙을 찾으려고 했었다. 에드 혹 태그가 달려있어서 특별한 자료구조는 필요하지 않겠다 싶었고. 경우의 수들을 나눠봤다. 먼저 케이크 둘레에서 둘레를 자르기 때문에 자른 횟수가 N번째인 사람은 조각을 최대 N개를 늘릴 수 있다. 지나친 간선 + 1이 최대이고. 둘레에서 둘레기 때문에 어떻게든 1조각도 늘어날 수 있겠다 생각을 했었다. 그렇다면 최선을 다한다만 생각하면 되려나? 였다. 비슷한 게임인 베라31에선 내가 상대방을 이기기 위해 상대방은 나를 못 끝내지만 다음에는 내가 끝내던지. 내가 끝내던..
문제는 간단하다. 네번째 줄에 주어지는 숫자들이 두번째 줄에 주어진 숫자였다면 해당 위치에 1, 아니라면 0을 반환하면 되는 문제다. 다만 입력값 범위가 굉장히 크기에 시간복잡도 O(n) 관리가 필요하다. HTML 삽입 미리보기할 수 없는 소스 초기에 이분탐색을 사용해서 작성한 코드이다, 이분탐색은 하나 하나 탐색하는 방법보다 성능이 좋으므로 해결될거라 생각했다. ㅋㅋㅎ 퇴근하고 더워서 녹은 몸으로 작성해서 틀려도 별 생각이 없었다. 문제를 한번 더 읽고 그냥 당연하게 HashSet으로 작성해버렸다. HTML 삽입 미리보기할 수 없는 소스 간결하고, 배열을 정렬 할 필요도 없다. 단순히 값이 있는지만 해싱하기 때문에. 시간 복잡도를 비교해보면 이진 검색 방식: 첫 번째 배열 정렬(N_arr): O(N l..
처음에 봤을때 이거 그냥 배열로도 되겠는데,, 하다가 문제가 큐로 풀어주세요~ 하는거 같아서 메소드 찾아가면서 풀어봤다. 먼저 n w L 이 주어진다. n -> 트럭 수, w -> 다리 길이, L -> 최대 하중 모든 트럭이 다리를 지나가는 시간을 계산하는 문제고, 다리 하중보다 높으면 트럭을 올라갈 수 없다. 또한 1초에 1칸씩 이동하는 개념을 갖고있다. 간단하게 생각했을때 트럭이 없어질때까지 반복해서, 다리에 올릴 수 있으면 올리고, 하중때문에 못올린다면 0값을 넣어서 밀어 넣는 식으로 생각했다. 내릴때는 0번째 위치면 내리고, 아닌 친구들은 idx를 1씩 빼면서 로케이션을 바꿔주면 되겠다 했다. 근데 Queue를 써버리면 그냥 문제 흐름 그대로 FIFO(선입선출)기 때문에 인덱스 관리를 할 필요가 ..
보자마자 Split 쓰거나 CharAt으로 공백 구분하면 되겠는데 했다. 양쪽 공백은 trim으로 없앤 후 배열에 넣어서 크기를 내면 답이겠네~ 했다. HTML 삽입 미리보기할 수 없는 소스 charAt으로도 간단했는데 다른사람은 뭐로 풀었다 검색해보다가 StringTokenizer이라는 메소드를 찾았다. 문자열을 구분자로 쪼개주는 클래스인데 token으로 구분짓는다고 한다. >> StringTokenizer HTML 삽입 미리보기할 수 없는 소스 이런식으로 작성하면 Hello how are you today? 이렇게 쪼개준다. 물론 복잡한걸 사용하려면 split()를 사용하는게 좋다고 한다. GPT한테 슥 물어보니 StringTokenizer(String str, String delim) 토큰화할 지정..
스택 메소드 구현 문제이다. 근데 집중을 안했는지 정수가 아닌경우도 입력받는걸로 이해해서 혼자 정수처리하다 오래걸려버렸다.. 그냥 단순하게 스택을 구현하면 되는 문제였다. 프로그래머스로 풀다가 오랜만에 이클립스 IDE 써보니까 어색하고 함수 구분하는것도 에베베 으베베가 되었다. 백준이랑 SW Expert로 많이 해봐야겠다 호후호 HTML 삽입 미리보기할 수 없는 소스
처음엔 간단하게 생각했다. 초기값을 정하고, 연산 경우의 수를 따져서 간단하게 로직을 작성했었다. 가능한 큰 수인 3으로 나누는 경우가 좋을 것이라 판단했고, -1의 경우도 있기에 X % 3 == 1이면 2의 배수여도 먼저 -1 후 3을 나누는게 나을 거라고 판단했었다. X가 10이라면 10 -> 5 -> 4 -> 2-> 1 10 -> 9 -> 3 -> 1 이런 차이도 있기 때문에 저런 로직을 추가했었다. HTML 삽입 미리보기할 수 없는 소스 가볍게 틀려주면서 반례를 고민해 봤는데 700 -> 699 -> 233 -> 232 -> 231 -> 77 -> 76 -> 75 -> 25 -> 24 -> 8 -> 4 -> 3 -> 1 700 -> 350 -> 175 -> 174 -> 58 -> 29 -> 28 ..