본문 바로가기

Java78

[JAVA] 나무 자르기 (백준 2805) 이분탐색의 기본중에 기본이라고 생각한다. 문제는 쉽지만 프로그래머스에서만 풀다보니 입출력하는 방법이 어색했다. 입출력하는 방법에도 익숙해 질겸 백준문제 쉬운거 하나 골라보았다. 다른 사람들의 풀이를 보니 대부분 BufferReader 와 StringTokenizer의 조합을 쓰고 있었다. 본인도 두개의 조합으로 문제를 풀었다. high를 tree의 최대값으로 설정하면 440ms 까지 줄일 수 있다. 220ms 까지 줄이려면 입출력을 직접 코딩해야한다.... 2020. 7. 30.
[JAVA] 블록 이동하기 (kakao 2020) 최대한 깔끔하게 풀어보려는 욕심 때문인지 시간이 오래걸렸다. 이 문제를 풀면서 자바에 더 익숙해지고 있는 느낌이 든다. 알고리즘은 bfs 이지만 회전하는 부분의 구현이 복잡하다. 어렵진 않지만 작은 하나의 실수라도 굉장히 고민하게 할 수 있다. 만약 이 문제를 풀때 테스트케이스 1번에서 틀렸고 문제를 풀때 "방향" 이라는 설정을 잡았다면 방향에서 오류가 났을 가능성이 크다. 필자가 그러하였다. 예를 들어 데이터를 다음과 같이 잡았다고 하는 경우를 든다. (1,0,0) 의 의미는 좌표(1,0) 에서 방향이 0(수평) 본인은 방향을 잡고 풀었는데 테스트케이스 1번을 도저히 통과가 안되어 좌표 2개를 잡고 로봇의 움직임을 설정하였다. 모든 로직이 같지만 통과한 것을 보면 분명 방향 관련 로직을 잘못 설정했을 .. 2020. 7. 29.
[Spring] spring boot 입문하기 spring 이라는 거대한 아이템에 접근하기 위해서 강의를 찾던중 인프런의 김영한님 강의를 듣게 되었다. 스프링부트 입문 강의는 모든 자료와 영상이 무료로 풀려있고 입문 영상으로는 최고라고 생각한다. 아직 안들었다면 꼭 들어보길 추천한다. 강의 들은 내용을 바탕으로 처음 부터 끝까지 혼자 직접 코딩하고 정리해보고 앞으로 어떤 부분을 깊게 공부해야할 지 정해야겠다. 개인적으로 jpa를 깊게 해볼까 생각중이다. 일단 뭘 알기 전에 프로젝트부터 생성해보고 시작하자. 1) 프로젝트 생성하고 살펴보기 설정은 위와 같이 자바11버전과 spring boot 버전 2.3.2 와 빌드 방식은 Gradle Project로 설정한다. 템플릿 엔진은 여러개 있는데 강의에서 타임리프 썼기 때문에 본인도 타임리프를 선택한다. D.. 2020. 7. 27.
[JAVA/PYTHON] 자물쇠와 열쇠(kakao 2020) 파이썬이 역시 간결하긴하다. 그래도 자바공부중이니 자바로 열심히 풀어봤다. 문제를 접근하는 방법에 대해 고민을 많이 했다. 완전탐색으로 해도 될까했는데 대충 계산해본 결과 20*20 자물쇠와 20*20 키를 가지고 있다고 해도 시간초과는 나지 않을거 같았다. 그래서 완전탐색으로 풀기로 한다. 풀기위해서 메소드를 나누는데, 1) 키를 90도씩 돌리는 함수를 작성하기로 한다. 이는 rotate라는 이름으로 작성하였다. 2) 자물쇠 배열을 상하좌우 및 대각선까지 자물쇠 크기만큼 span한 새로운 자물쇠 배열을 초기화한다. 이를 spanLock이라는 이름으로 작성하였다. 3) 키와 자물쇠를 합쳤을 때 참인지 거짓인지 판별하는 check함수를 작성하였다. 4) span 되어있는 자물쇠에 키가 올수있는 모든 경우의.. 2020. 7. 26.
[JAVA] 문자열 압축 (kakao 2020) String 관련 문제를 해결하기 위해서는 Stringbuilder 를 쓰면 편하다는 글을 보고 시도해보았다. 내가 문제를 풀기 위해 공부했던 String 관련 도구들은 다음과 같다. 1) String 의 길이를 알기 위해서는 length() 메소드를 사용하면 된다. 2) String + String 보다는 Stringbuilder를 통해 append 하면 연산이 빠르다. 3) substring(시작위치,끝위치) 메소드를 이용해 문자열을 자른다. split 보다 권장되는 사항이라고 한다. 위 3가지를 이용해 쉽게 풀었다. 알고리즘은 다음과 같다. 1) i = 1, answer = s의 길이; 2) ( i < 문자열 길이의 반) 이라면 3번으로 간다. 아니라면 10)번으로 간다. 3) cnt =1 로 초기.. 2020. 7. 25.
[JAVA] 주식가격 - 프로그래머스lv2 파이썬으로 매일 풀다가 자바로 처음 도전했던 문제다. 처음 문제를 이해하지 못해서 한참 고민했지만 풀이방법은 매우 간단하다. [ 1, 2, 3, 2, 3 ] 배열이 주어졌을 때, 아래와 같은 과정을 거친다. (단, n=배열의 길이, i=0~n-1 ) 1) 해당 i 번째 인덱스의 값을 price 라는 변수에 저장한다. 그리고 cnt 라는 변수를 0 으로 초기화한다. 2) j= (i+1 ~ n-1 ) 이라고 하자. 루프를 돈다. 2-1) cnt 의 값을 증가시킨다. 2-2) 만약에 price 의 값보다 j가 더 작으면 루프를 탈출한다. 3) answer[i] 에 cnt 값을 저장한다. 아래는 소스코드 2020. 7. 25.