public class Test { public static void main(String\[] args) { boolean num\[] = new boolean10000+1; int eachSum = 0; int tempI = 0 ; for (int i = 1 ; i
처음으로 숏코딩 1등
import java.util.Arrays; import java.util.Scanner; public class Test_2447 { static char array; public static void main(String[] args) { Scanner
System.out.println 을 계속 찍어냈더니 시간초과가 뜸 => StringBuilder를 사용해서 해결
반복문이 너무 많이 중첩되길래 잘못짜는건가 해서 인터넷 찾아봤더니 정상적인 풀이였다.
N개의 데이터를 정렬한다고 했을 때첫 번째 루프 : N-1 번 비교 ( index 1 ~ index N-1 )두 번째 루프 : N-2 번 비교 ( index 2 ~ index N-1 ). . . (n-1) + (n-2) + . . . + 2 + 1 = n(n-1)/
처음에 Quick Sort로 접근했다가 시간초과가 났다. 찾아보니 Array에서 기본적으로 제공하는 sort() 메서드도 퀵 소트를 사용한다고 한다. 정답률이 30%인데 이러한 메서드로 통과될 리도 없고 모르겠어서 인터넷을 찾아봤더니 Collections.sort(
입력받은 수의 최댓값 만큼 반복문을 돌리려 했는데 최댓값인지 체크하는 조건문이 계속 반복되다보니 오히려 성능이 떨어졌다. 카운팅 정렬이 의외로 큰 수에도 적용되길래 카운팅 정렬으로 해결해 보았다.
수업 때 배운것들을 써먹을 수 있어서 뭔가 배웠다는 느낌이 들었던 문제였다.
반례찾을때마다 코드를 덧붙였더니 엄청 보기힘들어졌다... 다시 풀어야 할듯
최적화를 하다가 알아낸 사실 같은 코드를 돌려도 실행시간이 오락 가락한다
최적화 다시 해볼것
상위권 코드를 보니 비트연산을 활용했던데 공부해서 다시 풀어보면 좋을 것 같다.
위와 같은 도형이 있다고 할 때 인접한 변들을 계속해서 곱해본다고 생각하면 다음과 같다.여기서 규칙을 하나 찾을 수 있는데 4부위로 나누어서 보면1사분면(100x30) 은 하늘색 , 갈색 , 빨간색 3부분이 겹친 것을 확인할 수 있고2사분면(30x60) 은 회색 , 하
가장 긴 증가하는 부분 수열을 순서대로 한번 , 역순으로 한번 구한 뒤 더해주면 쉽게 찾을 수 있다.
N과 M 1~8NM과 K 풀기
기존방식대로 하니까 시간초과
0413 수업때 배웠던 유형의 pq + 다익스트라 문제
처음 입력값 만큼 반복문을 돌려주며 switch 문으로 검사하면 끝
단어 단위로 잘라서 단어의 길이만큼 반복문을 돌리면서 한글자씩 출력 만들기
스택공부 하느라 스택을 사용해봤지만 , 스택을 사용하지 않고 갯수를 확인하는 변수 하나로 풀면 더 빨리 풀 수 있을것 같다.
스택이랑 거의 동일한 문제 back만 잘 처리해 주면 된다.
스택 2개를 활용하여 커서를 관리해봤다.
사람들은 연결리스트로 빠르게 풀었던데 관련해서 공부해야겠다.
스택 , 큐랑 거의 동일한 문제 하도 풀다보니 메서드 이름도 외워졌다.
개똥같은 코드를 짰다고 생각했는데 예상외로 순위권이었다.
입력을 하나만 받는데도 scanner보다 빠르다.
거북이가 걸어가는 듯한 채점속도. 틀릴까봐 조마조마했다.
count를 가지고 다니는게 중요하다 전역변수로하면 모든 경로가 다나온다
3차원 배열로 풀이 높이값만 잘 처리하면 2차원 배열로도 가능할 것 같다.0의 갯수가 0개면 바로 0을 리턴,총 0의 갯수가 익은 토마토 갯수랑 다르면 -1을 리턴나머지경우는 1을 전부 큐에 넣은 뒤 x,y,z,count 값을 가지는노드를 만들어서 풀이했다. 3차원배
생긴건 이렇게 생겼지만 우리에게 익숙한 정사각행렬로 생각하면 편하다먼저 행 요소들을 뽑아낸 뒤 행 요소들 중에서 열 요소들을 다시 뽑아내서 더해주면 끝JS로 코테를 보는 곳이 많아지면서 문법 공부도 할겸 JS 알고리즘 공부를 시작했다.ES6 문법등 개발하면서 손이 잘
쓸데없이 재귀로 풀다가 시간초과났다
킹받는 문제
파이썬으로 갈아타기
import sys from collections import deque n , m = map(int, sys.stdin.readline().split()) dx = [0 ,1 , 0, -1] dy = [1 , 0 ,-1 , 0] matrix =[[0]*(m+2)] m
dfs승dfs 는 뺄 때 방문체크 / bfs 는 넣으면서 방문체크
파이썬에 점점 익숙해져간다
다른 풀이collections 에 Counter를 사용하면 원소가 몇 번씩 사용되었는지 나타내는 dictionary 를 리턴해준다.
시간차이 뭥미..
최장 증가 수열 LIS 를 구해서 전체 크기에서 빼주면 된다. 2중 for문으로 하면 $O(N^2)$ 이라서 이분탐색으로 수행하였다.결과 배열은 정확한 LIS는 아니지만 길이만 구하면 되기 때문에 빠르게 풀 수 있었다.
바이러스 후보들을 combinations 를 활용해서 구한 뒤 deepcopy한 map을 가지고 BFS를 사용하며 최솟값을 찾는 문제 한번에 맞긴 했는데 계속 고쳐가면서 하다보니 스파게티 코드 완성
더블 링크드 리스트를 사용하여 구현하였다. 하나의 노드에는 이전 노드를 가리키는 prev , 인덱스를 가리키는 Num , 제거되었는지를 나타내는 Removed 그리고 다음 노드를 가리키는 next 로 구성되어있다.U command 같은 경우 간단하다 문제에서 범위를 벗
굉장히 불친절한 문제 개인적으로 실버정도 난이도라고 생각
3의 배수일 때 몫을 1씩 빼주면 끝
대 소문자가 바뀌는 구간에서 +1 (Caps Lock) 해주되, 대 소문자가 바뀌고 1번만 나오고 다시 바뀌는 경우 별표를 활용해야 한다.