일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HashSet
- 백준 14938번 서강그라운드
- kotlin
- HashMap
- 18111번 마인크래프트 - java 구현
- 최소 힙 1927
- 백준 1043번 거짓말 - java 분리 집합
- ac 5430번
- 프로그래머스 자바
- Stack
- 프로그래머스 java
- 프로그래머스
- 백준 1541
- dp
- 코틀린기초
- 백준 2473번 세 용액 - java
- 백준 3190번
- 백준 1197번 최소 스패닝 트리 - java
- replace()
- map
- append
- mysql hy000 에러
- StringBuilder
- Java
- StringTokenizer
- 백준 1806번 부분합 java
- 백준 2467번 용액 자바 - 이분탐색
- toUpperCase
- 백준 1647번 도시 분할 계획 - java
- hash
- Today
- Total
목록전체 글 (176)
말하는 컴공감자의 텃밭
전형적인 그리디 알고리즘으로, 인출시간이 빠른 사람을 앞에두면 최소의 시간으로 모두 인출 할 수 있다. 다른 조건을 확인 할 건 없으므로 정렬 후 순서에 맞게 더해준다. temp 변수를 통해 반복적으로 앞의 수를 더 해준다. 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에선 내가 상대방을 이기기 위해 상대방은 나를 못 끝내지만 다음에는 내가 끝내던지. 내가 끝내던..
처음엔 쉬워 보였다, 최대자릿수가 6자리 기도 하고.. 교환 횟수를 홀수와 짝수를 나누어서 큰수 찾아서 비교,,, 아 할게 많구나 싶었다. 아니면 그리디 방식으로 해야하나? 했다가 6자리니까 DPS로 풀어보자 했다. DPS는 완전 탐색으로 자물쇠가 000부터 999까지라면 모든 수를 넣어서 열어보는 방식이다. HTML 삽입 미리보기할 수 없는 소스 에잉 귀차나 먼저 숫자를 %10으로 자릿수를 배열로 담아준다. 조작 횟수가 길이보다 많다면 의미가 없어지므로 불필요한 연산은 줄여주었고, 재귀 dfs 함수와, 위치를 바꾸는 swap 함수, 배열을 숫자로 만드는 함수 arrToInt를 만들어 주었다. 재귀는 사이클이 없도록 if문에 조작 횟수를 다 사용했을 경우 return 하도록 구성했다. for문을 통해 모..
문제를 처음 읽었을때. 정답률 17%도 보고 이게 뭐지 생각했다. A와 B가 같아지고 싶은데, 소수로 빼고 더하고만 가능하다. 조작 횟수를 출력한다 만약 소수로 같아지게 할 수 없다면 -1을 출력한다. 단 최대 값을 원하는 문제이다. 예를 들어 A 가 5 B가 10라면. A에 +2 또는 +3을하고, B에 -3 또는 -2. 아니면 한쪽에서 +2, +3, -2 -3 하는 방법이 있다. 모두 operation은 2이므로 답은 2가 된다. 소수가 눈에 띄어서 따로 함수로 풀었으나, 웬걸 이거 최대값이니까 2로 최대한 빼주고 더해주면 되는 문제였다. 어? 쉽네 하고 슥슥 작성했다. HTML 삽입 미리보기할 수 없는 소스 46개에서 42개가 맞아서 음? 했다. 반례가 있나~ 해서 gpt 도움을 받을라 했는데 아무튼..
가장 높은곳에서 블럭을 옮겨, 낮은 곳으로 옮기는 문제이다. 최종적으로는 정해진 횟수만큼 움직여서 가장 높은곳과 낮은곳의 차이점을 출력하면 되는 문제다. A가 최고점이므로, B로 이동. A가 최고점이므로 C에 이동, C`에 이동해도 무방하다. 가로는 100으로 고정되어 있으며, 10번의 tc가 주어진다. 점프 회수는 1~1000이고, 모두 동등해지면 더이상의 평탄화는 불가능하므로, 그때 상황에 따라 1또는 0을 출력한다. ex) 666766 의 경우 7이 높긴하나 더 옮길 수 없으므로 1 출력. 보자마자 단순 구현이라는 생각이 들었고, 가장 높은곳은 -1, 낮은곳은 +1 * 주어진 횟수로 풀었다. HTML 삽입 미리보기할 수 없는 소스 간단쓰.. 이런건 너무 좋자나
문제가 level 2치고는 간단해 보였다. 구현 문제자나~~ 시간 복잡도만 고려하면 되겠다 싶었다. 일단 문제 그대로 읽으면서 구현해봤다. 뒤에 큰수를 찾으면 max에 저장해두고, 해당값을 answer[i]에 넣는다. max가 본인이 되는 경우를 제외하면 그 사잇값은 max가 뒷큰수가 된다. 찾지 못한경우 boolean으로 구분해 -1을 넣어주었다. HTML 삽입 미리보기할 수 없는 소스 하지만 입력값이 1,000,000 까지기에 n^2은 무리였나보다. 나머지는 맞았으나, tc 20~23번에서 시간 초과가 발생했다. 하지만 다른 방법은 안떠오르고,, 어떻게 최적화 할까 하다가 앞부터 찾으니 큰 수를 하나하나 다 찾아야하는게 오래걸린다 싶었다. 뒤에서 부터 탐색하며, 뒤에 숫자의 뒷큰수에 따라 앞이 정해지..