본문 바로가기

개발

(99)
[BOJ] 영역 구하기_2583 이 문제를 보았을 때, 15분 안에 정답 풀이법을 생각해 냈다. 하지만 제출해서 정답을 얻는데 까지는 40분 정도가 소요됐다. 풀이법을 코드로 풀어내는 데에 걸리는 시간이 20분 정도가 되었고, 오타 하나를 찾는데 걸리는 시간이 20분 정도가 되었다. 오타가 정말 문제다. 이건 아마 내가 변수명을 대충 지은 탓이 크다. 변수명을 어떻게 지어야 할까..? 나중에 코테를 볼 때도 변수명을 보긴 할거같은데,, 이런건 다른 사람에게 조언을 한번 구해보자.
[BOJ] 안전 영역_2468 이 문제는 푸는 생각을 하는데 까지 15분도 걸리지 않은 것 같다. 어떻게 풀어야 할지 머리로 먼저 생각하였고, 결과적으론 그 생각이 바로 맞았었다. 몇일 전까지만 해도 전혀 감이 안잡혔는데 생각보다 빨리 문제에 대한 감이 생기는 것 같다. 하지만 문제를 풀고 제출하는데 까지는 시간이 1시간도 넘게 걸렸다. 그 이유는 파이썬에 대한 몇가지 몰랐던 문법과 작은 실수들 때문이였다. 파이썬 문법 몰랐던 것 단순 객체복제 data = [1] data2 = data data2[0] = 2 이렇게 한다면 data2는 data변수를 단순히 복사한 것이기 때문에 둘다 가르키는 방향이 동일하다. 그러므로 data2의 값을 바꾸면 가르키는 객체의 내용이 바뀌는 것이기 때문에 둘다 값이 동일하게 바뀐다. 깊은 복사와 얕은 ..
[Spring] lombok 어노테이션 @Getter @Setter -> class위에 선언해주면, 해당 클래스에서 사용하는 모든 필드의 getter/setter를 자동으로 생성해준다. 만약, 전체를 원하지 않는다면 원하는 해당 필드 위에만 적어주면 된다. @AllArgsConstructor -> 모든 필드를 초기화하는 생성자를 자동으로 만들어준다. @NoArgsConstructor -> 어떤 변수도 사용하지 않는 기본 생성자를 자동으로 만들어준다. @RequiredArgsConstructor ->특정 변수만을 사용하는 생성자를 만들어 준다. 생성자 인자로 추가하고 싶다면, 해당 변수위에 @NonNull어노테이션을 추가해주거나, 해당 변수를 final로 선언해주면 된다. @EqualsAndHashCode @EqualsAndHashCode 어노..
[BOJ] 유기농 배추_1012 이 문제를 푸는데에는 30분이 걸리지 않았지만, 오류 때문에 오랜 시간이 걸렸다. if 0
[BOJ] 1697 숨바꼭질 문제는 수빈이가 동생을 +1, -1, *2 세 가지의 움직임을 통해 가장 빠르게 찾을 수 있는 횟수를 구하는 것이다. 처음에는 이것이 bfs랑 무슨 연관인거지? 생각하고 IF문을 마구잡이로 쓸 생각 밖에 나지 않았다. 문제 풀이를 보고나서, 풀이의 핵심은 visited배열을 MAX(100001)만큼 만든 것을 통해 해결하려고 한 것이다. 수빈이가 움직일 수 있는 범위를 최대 MAX로 둔 것에 착안하여 움직인 위치에 방문 횟수를 기록하는 방식이다. 현재 수빈이의 위치를 Queue에서 pop한 후, 세 가지 동작에 대하여 아직 방문하지 않았고, 범위를 초과하지 않았다면 이동한 visited배열에 이동하기 전 visited배열의 값 +1 을 넣는다. 아직도 헷갈리는 것은 visited가 왜 0이면 안되는걸까?..
[Spring] @ResponseBody란 원래 그냥 리턴을 하면, 즉 @ResponseBody가 없다면 viewResolver한테 던져서 해당 뷰를 리턴해준다. 하지만 @ResponseBody가 있기 때문에 HTTP응답에 그대로 이 데이터를 넘기려고 한다. 여기서 문자면 그냥 문자를 넘겨주겠지만, 객체를 넘겨줘야 하기 때문에 JSON방식으로 데이터를 만들어서 HTTP응답에 반환을 한다. @ResponseBody가 있다면 HTTPMessageConverter가 동작을 한다. 만약 그냥 문자열을 반환해야 한다면 StringConverter가 동작하지만, 객체일 경우 JsonConverter가 동작한다. JsonConverter은 객체를 JSON스타일로 바꿔서 반환해준다.
Spring 예제 실행 과정 localhost:8080/hello-mvc?name=Spring 을 접속할 때의 과정을 설명하겠다. 우선, 웹 브라우저가 내장 톰켓 서버에 localhost:8080/hello-mvc?name=Spring을 요청한다. 내장 톰켓 서버는 스프링에 요청한다. 스프링은 우선 컨트롤러에 hello-mvc가 있는지 찾아본다.(없다면 resource를 뒤져서 찾아낸다.) 해당 예시에는 컨트롤러에 hello-mvc가 있으니 찾았다. 파라미터로 변수 name에 받아온 값 "name"을 넣었다. model.addAttribute를 통해 model의 name에 변수 name을 넣었다. return hello-template를 통해 해당 html에 name에 변수 name값을 넣는다. return을 할 때, 컨트롤러가 v..
터미널로 Spring실행하는 방법 cmd로 실행하는 법 1. git bash로 프로젝트 파일에 가서, ./gradlew build를 한다. 2. gradle -> lib에 가서 ls -arlth를 친다. 그럼 뒤에 나오는 프로젝트명~을 복사한다. 3. java -jar 붙여넣기(복사한거)