분류 전체보기
-
부스트캠프 2020 챌린지 합격ETC 2020. 7. 17. 22:40
지원에 앞서서 지원 당시에 혼자 공부하는 것도 조금 지치고, 공부의 방향을 잡은지 얼마 안됐기 때문에 머리가 많이 복잡했었다. 그러던 중, 작년에 부스트캠프를 들었던 동기와 함께 취준을 하던 동기를 통해 부스트 캠프를 알게됐다. 취준을 함께 하던 동기는 SSAFY 합격소식을 전하면서 부스트캠프를 함께 할 수 없게됐고, 나는 그 당시 SK C&C 코딩테스트와 일정이 겹쳐서 SSAFY 시험을 보지 못했다. 하지만, 부스트캠프라는 좋은 기회가 남아있었기에 과감하게 도전했다. 입과 절차 자소서 -> 1차 코딩테스트 -> 2차 코딩테스트 -> 캠프 입성 위의 절차를 거쳐서 교육 대상자를 선정했다. 분야는 웹 풀스택(JAVASCRIPT)와 모바일IOS(SWIFT) 두 분야가 있었다. 모바일도 매력적이었지만, SWI..
-
BOJ) 적록색약알고리즘/백준 2020. 7. 16. 16:59
적록색약 10026번: 적록색약 문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G( www.acmicpc.net 풀이 적록색약이 있는 사람이 봤을 때 영역의 갯수와 일반 사람이 봤을 때 영역의 갯수를 각각 출력하는 문제다. 가장 기본적인 grouping을 활용하는 문제였다. 코드 수를 줄이려면, 서칭하는 메소드를 하나로 합치고 식별 번호를 부여해서 if문을 통해 처리할 수 있다. 하지만, 코드의 길이가 200 300줄이 되는 정도는 아니어서 그냥 나눠서 진행했다. ( solution에서 더 깔끔하게 볼 수 있기 때문에) 평범한 사람이 봤을 때는, 해당 맵과 ..
-
BOJ) 토마토알고리즘/백준 2020. 7. 16. 16:52
토마토 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 세 번을 시도한 끝에 풀었다. 처음에는 익지 않은 토마토의 총 갯수를 입력받을 때 저장하고, 매 회차 익지않은 토마토 주변을 탐색하면서 익게 만들었다. 하지만, 당연하게도 시간초과가 떴다. 두번째로는 익지 않은 토마토에서 시작하는 방법을 그대로 적용하고, 각 토마토 위치마다 익게되는 날짜를 저장할 int형 배열을 만들었다. BFS 탐색을 통해서 저장한 다음, 최대 날짜를 최신화했고, 안익은 토마토가 0일로 남아있다면 불가능하다..
-
BOJ) 다리 놓기알고리즘/백준 2020. 7. 16. 16:42
다리 놓기 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 풀이 강의 왼쪽과 오른쪽에 다리를 건설하는데, 교차해서 지으면 안되는 조건의 문제다. 왼쪽보다 오른쪽에 다리를 지을 수 있는 포인트가 더 많다. 여기서 Combination 문제라고 생각했다. 하지만, 30이나 되는 수에서 직접 Combiantion을 구할 수 없었기 때문에 수학 공식을 찾아봤다. nCr = n-1Cr-1 + n-1Cr 이라는 공식이 있다는 것을 알았다. 앞으로는 콤비네이션을 이용해 푸는 문제를 만났을 때, 더욱 효율적으로 풀기 위해 ..
-
9장) 코드가 푸시되면 자동으로 배포해 보자 - Travis CI 배포 자동화Java & Spring/스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2020. 7. 15. 21:31
CI & CD 소개 CI => Continuous Integration - 지속적 통합 VCS (코드 버전 관리 시스템)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 CD => Continuous Deployment - 지속적 배포 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정 CI 4 규칙 모든 소스 코드가 살아있고(현재 실행되고) 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 할 것 테스팅을 자동화해서 단일 명령어로 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것 누구나 현재 실행 파일을 얻으면 지금까지 가장 완전한 ..
-
8장) EC2 서버에 프로젝트를 배포해 보자Java & Spring/스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2020. 7. 14. 23:55
EC2에 프로젝트 Clone 받기 git 설치 sudo yum install git으로 git 설치 git --version으로 설치 상태 체크 프로젝트 저장할 디렉토리 만들기 mkdir ~/app && ~app/step1 생성 cd ~/app/step1 이동 git clone하기 git clone 깃헙주소 테스트로 코드 검증하기 ./gradlew test 성공했다면, BUILD SUCCESSFUL이 뜬다. 여기서 한 번 실패가 떴는데, 실행권한이 없다는 표시가 떴다. chmod +x ./gradlew로 권한을 부여해줘서 해결 배포 스크립트 만들기 배포할 때마다 개발자가 하나하나 명령어를 실행하는 것은 비효율적 쉘 스크립트로 작성해서 스크립트만 실행하면, 위의 과정이 진행되도록 생성 쉘 스크립트 .sh라..
-
BOJ) 체스판 위의 공알고리즘/백준 2020. 7. 11. 20:55
체스판 위의 공 16957번: 체스판 위의 공 크기가 R×C인 체스판이 있고, 체스판의 각 칸에는 정수가 하나씩 적혀있다. 체스판에 적혀있는 정수는 모두 서로 다르다. 체스판의 각 칸 위에 공을 하나씩 놓는다. 이제 공은 다음과 같은 규칙�� www.acmicpc.net 풀이 체스판의 크기가 500x500이지만, 공들이 옮겨가면서 0인 부분이 많이 생길거라고 생각하고 DFS로 진행했다. 하지만, 6%에서 시간초과가 떴고 DFS로는 풀 수 없는 문제라고 생각이 들었다. 그래서 인접한 칸들 중 가장 작은 숫자로 이동한다는 조건을 보고, find-union을 응용하면 풀 수 있을거라고 생각했다. 일단, union부분은 필요가 없다고 생각을 했다. 생각하기도 복잡해지고, 타고 타고 이동해야하는 특성상 paren..
-
BOJ) 회의실배정알고리즘/백준 2020. 7. 11. 20:43
회의실배정 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 포스팅하기에는 조금 민망한 코드지만, 정답률이 높지 않아서 포스팅하게 됐다. 회의가 시작시간과 끝나는 시간이 담겨있는 여러 회의에 대해 요청받는다. 이 때, 고르게 분포해서 최대한 많은 팀이 회의를 할 수 있게 만들어야한다. 그래서 처음에는 회의 시간이 가장 짧은 순으로 정렬을 했었다. 하지만, 반례가 존재했고 다시 고민했다. 회의가 끝나는 시간을 기준으로 시작시간이 가장 빠른 순서로 정렬하기로 했다. 회의가 끝나는 시간이 빠른 회의들 중 가장 회의 시간이 짧은 회의들을 채택하는 방법이다. 이후, 정렬된 배열을 돌면서 앞선 회의의 끝나는 시간과 같거나 이후인 회의..