프로그래밍
-
[ 알고리즘 ] 백준 1935번 후위표기식 2프로그래밍/알고리즘 2019. 5. 2. 16:17
백준 1935번 후위표기식 2 문제 링크 아래 1918번 후위표기식을 풀고 바로 풀어서 그런 지, 바로 풀 수 있었다. 문제는 크게 어려움 없이, 두가지 경우로 나눠서 해결했다. 알파벳인 경우에는 해당하는 숫자를 바로 스택에 push해주었다. 연산자인 경우에는 스택에서 두 피연산자를 pop해준 뒤 ( 두번 ) 이를 연산자를 이용하여 계산하고, 이를 다시 스택에 push해주었다. 위의 두가지를 반복하여 답을 구하였고, System.out.format()함수를 이용하여 소수점 두자리 까지 표현하였다. 코드 package Algorithms; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i..
-
[ 알고리즘 ] 백준 1918번 후위표기식프로그래밍/알고리즘 2019. 5. 2. 15:52
백준 1918번 후위표기식 문제 링크 이 문제는 Stack을 이용하는 문제로 평소 학교 공부에서도 많이 풀어보았다고, 생각해서 쉽게 풀 수 있을 것이라 생각했는데 쉽지 않았다. 결국은 다른 사람의 답을 참고하여 해결하였다. 생각해보니 평소에는 후위표기식으로 표현된 식을 계산하는 문제를 많이 풀어보았지, 주어진 식을 후위표기식으로 변환을 시키는 코드를 짜본 적은 없는 것 같다. 문제 풀이 입력받은 문자열을 차례로 비교하는데 총 네가지의 경우가 있다. 알파벳 연산자 열린 괄호 닫힌 괄호 각 경우에 따라서 출력하거나 스택에 넣거나, 스택에 있는 것을 꺼내주는 식으로 해결한다. 먼저 알파벳인 경우에는 그냥 바로 출력해준다. 나는 그냥 StringBuilder를 하나 만들어서 거기다 계속 append해줬다. 연산..
-
Spring boot S3 Local에서 Test하기프로그래밍/서버 프로그래밍 2019. 4. 4. 19:19
Spring boot S3 Local에서 Test하기 문제 S3를 사용하여 정적 이미지를 업로드 하도록 설정을 하였더니 , 문제가 생겼다. 테스트할 때 마다 실제 s3 저장소에 이미지가 올라간다는 점과, Travis 에서 빌드할 때 accessKey 와 secretKey가 없으니 계속해서 빌드에 실패하는 것이다. 해결방안 인터넷에 어떤 블로그에서 실제 회사에서 업무 시 하나의 s3 버킷에 여러명의 개발자가 붙어서 개발하면 다양한 문제가 발생할 수 있기 때문에 로컬에서 테스트시에는 s3 mock을 이용해서 로컬에서 각각의 mock으로 작성된 s3 버킷에서 테스트를 한다는 글을 며칠전에 봤던 것이 기억나는데 아무리 다시 찾아서 읽어보려해도 찾지 못했다…ㅠㅠ 그래도 그 후 s3 mock 에 관련되서 검색해본 ..
-
[알고리즘] 백준 2667번 단지번호붙이기 ( BFS )프로그래밍/알고리즘 2019. 3. 26. 18:11
백준 2667번 단지번호붙이기 문제 바로가기 오늘은 단지번호붙이기 문제를 풀어보았다. 원래 그림이나 이차원배열이 나오는 문제는 보기만해도 풀기 싫어서 넘기곤 했는데, BFS, DFS를 연습하면서 이제 그나마 거부감이 많이 줄었다. 문제는 2차원배열내에서 서로 이어진 단지가 몇개 있는지 찾는 문제로, 이와 비슷한 문제를 이전에 풀어본 경험이 있어서 쉽게 풀 수 있었다. 먼저 2차원배열을 잘 입력받아서 map이라는 배열에 넣어줬고, visited라는 2차원 boolean배열을 만들어 주었다. 이 후, 1이 있는 위치를 돌면서 bfs 함수에 넣어준다. 이 때 visited 값이 true이면 이미 다른 이어진 부분에서 체크를 했다는 뜻이므로 bfs함수를 돌지 않는다. for (int i = 0; i < N; i..
-
[알고리즘] 알고스팟 소풍 PICNIC프로그래밍/알고리즘 2019. 3. 22. 15:24
알고스팟 소풍 PICNIC 문제 바로가기 백트래킹으로 문제를 해결하였다. 보통 이런식으로 모든 방법의 수를 구하는 방법은 백트래킹으로 구하는 경우가 많은 것 같다. 이와 반대로 가장 먼저 도달하는 방법을 구하는 경우는 BFS가 많은 것 같은데... 이것도 더 익숙해져서 문제를 바로바로 어떤식으로 풀지 머릿 속에 나올 정도가 됐으면 좋겠다.... 먼저 친구관계를 저장해줄 friends 라는 이차원 boolean배열을 만들어서 친구관계를 저장하였고, 짝이 정해졌는 지 확인해줄 visited라는 boolean 배열도 만들어 주었다. 이 후 재귀함수를 만들어서 아직 짝이 없는 친구들을 짝을 주어지는 식으로 백트래킹을 해줬다. 구현 코드는 아래와 같다. /** * https://algospot.com/judge/..
-
[알고리즘] 알고스팟 BOARDCOVER 게임판 덮기 문제프로그래밍/알고리즘 2019. 3. 22. 14:26
알고스팟 BOARDCOVER 문제 바로가기 최근 취업준비로 알고리즘 공부를 꾸준히 하려고 노력하고 있다. DFS, BFS, 백트래킹 문제들을 위주로 풀어보려고 하고 있는데 생각보다 쉽지 않은 것 같다. 한 문제를 푸는데 한시간 이상 걸리는 경우가 다반사인데 실제 코딩테스트에서는 한문제를 30~1시간이내에 풀어야 하기때문에 주의해야겠다. 이번 문제는 알고스팟에서 문제를 보다가 _난이도 하 _ 라는 말에 덥석 문제를 풀기 시작했는데.... 나에게는 난이도 하가 하가 아니었다는 사실...ㅠㅠ 문제를 읽어보고 처음엔 백트래킹을 이용하여 금세 풀 수 있을 것이라 생각했는데 생각보다 일일히 바꿔주는 부분을 구현하는 데 오래 걸려서 결국 남들의 풀이를 참고하여 풀었다. 다행히 백트래킹을 사용하여 푸는 것이 맞았다 하..
-
Travis CI를 이용해 Maven + SpringBoot에 CI 적용하기프로그래밍/서버 프로그래밍 2019. 2. 20. 21:20
Travis CI를 이용해 Maven + SpringBoot에 CI 적용하기 CI CI란 Continuous Integration의 약자로, 각각의 개발자의 개발소스를 한번에 통합 빌드하는 과정을 지속적으로 함으로써 따로 어느시점에 코드를 모아서 통합빌드할 필요가 없도록 하는 기법을 말합니다. 이를 활용하면 배포를 위한 빌드와 테스트 단계의 소요시간을 줄일 수 있다고 합니다. CI Server 빌드 프로세스를 관리해주는 서버로 대표적으로 젠킨스, Travis CI, Circle CI가 있습니다. 오늘 저는 Travis CI를 이용해 제 SpringBoot 프로젝트에 CI를 적용해보겠습니다. Travis에 프로젝트를 연동완료하면, master브랜치에 소스코드가 올라갈때마다 자동으로 통합빌드 및 테스트를 진..
-
@Valid 에서 받은 Errors를 Serialize해서 ResponseEntity에 담자!프로그래밍/서버 프로그래밍 2019. 2. 19. 15:30
@Valid 에서 받은 Errors를 Serialize해서 ResponseEntity에 담자! 지난번 Valid로 RequestBody값 검증하기글에서 보면 제가 Errors를 바로 ResponseEntity.badRequest().body(errors) 이런식으로 에러를 직접 바디에 담아서 리턴해주는 코드를 짰습니다. 아마 실행해보신 분들은 이런 에러가 떴을거에요! org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [..