본문 바로가기

전체 글31

[우아한 프리코스] 1주차 미션: 숫자 야구 게임 돌아보기 (피드백 리뷰) 우아한 프리코스 는 우아한 테크코스의 입과 과정 중 하나이다. 총 3주 동안 미션을 수행하고, 마지막 주에 최종 테스트를 한 번 더 보고 최종 합격이 결정된다. 아래는 총 3주 간의 미션 중 첫 번째 주에 했던 미션 회고이다. 지금 보니 놓쳤던 것: indentation 깊이를 2 이하로 유지하기 프로그래밍 요구사항 중에 indentation을 2이하로 유지하라는 요구사항이 있었다. 함수로 분리해서 호출하는 방식으로 구현해야 하는 것이다. ball 여부를 판단하기 위해서, 숫자는 같지만 자리가 다른 경우를 알아내야 했다. 이 때 (이중 포문 + if문)을 쓰느라 indentation 깊이를 3까지 가져가게 되었다. 다른 방법이 있을텐데, 생각을 오래하지 않고 그냥 넘겨버렸던 것 같다. 1주차 미션을 하면.. 2021. 12. 2.
./gradlew 오류: Execution failed for task ':compileJava'. 프로젝트와 IDE 버전 세팅과 관련된 오류이다. 아래 링크를 따라하니 해결되었다. https://freelearn.tistory.com/17 Execution failed for task ':compileJava'. 증상 PC를 새로 구매하여 기존 프로젝트를 새로 셋팅하는 중이었습니다. build도 정상적으로 됐는데 프로젝트를 실행하려고 하니 Execution failed for task ':compileJava'. 에러가 나네요. 원인 결론은 한참 freelearn.tistory.com 2021. 11. 28.
Java Version (JDK version) 바꾸기 (Intel Mac) Step 1. 현재 맥에 깔려 있는 자바 버전 리스트 확인 $ cd / $ /usr/libexec/java_home -V Step 2. 원하는 버전이 없다면 다운로드 https://www.oracle.com/java/technologies/downloads/archive/ Step 3. ~/.bash_profile 또는 ~/.zshrc 파일을 vim 또는 nano로 텍스트 에디터로 열기 $ vim ~/.bash_profile $ vim ~/.zshrc Step 4. 해당 라인 추가. 아래는 JAVA 8로 바꾸기 위해서 1.8을 넣었다. 다른 버전이면 1.8 대신 해당 버전 숫자를 넣으면 됨. export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) 내가 했던 실수) ~/... 2021. 11. 24.
다익스트라 Djikstra 최단경로 알고리즘 (C++코드, Java코드) 다익스트라 알고리즘은 가장 기본적인 최단경로 알고리즘이다. 가장 기본적이란 말은 이외에도 벨만 포드, 플로이드 와샬 알고리즘이 있는데, 상대적으로 다익스트라가 대회에 많이 출제되기도 하고, 셋 중에 시간복잡도가 가장 빠른 알고리즘이기 때문에 꼭 숙지하는 것이 좋다. (참고로 시간복잡도는 각각 다익스트라 O(ElogV) / 벨만포드 O(VE) / 플로이드 와샬 O(V^3), 각각 사용되는 상황이 다름) 다익스트라 알고리즘은 한 정점에서 다른 모든 정점까지의 최소비용(최단거리)을 구하는 알고리즘이다. 내가 다익스트라를 사용하는 문제 유형은 다음과 같다. 1. 최단거리 / 최소비용 문제이다. 2. 문제를 읽었을 때, 문제의 의도가 한두 개의 적은 수의 출발점을 강조한다. (만약 모든 출발점이라면 플로이드와샬).. 2021. 5. 19.
도커 기초 용어 정리 (컨테이너, 이미지, 도커 CLI, 도커 서버 데몬, 도커 허브) 도커를 쓰는 이유 : 프로그램 설치 측면에서 예상치 못한 에러가 덜 발생하며, 설치하는 과정도 훨씬 간단해 진다. 도커란 무엇인가? : 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계입니다. 컨테이너란 무엇인가? 일반적인 컨테이너 : 물건의 운송수단. 서버에서의 컨테이너 : 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다. → 일반 컨테이너의 개념처럼 프로그램을 손쉽게 이동 / 배포 / 관리를 할 수 있게 해준다. AWS, Azure, Google cloud 등 어디에서든 실행 가능하게 해준다. 컨테이너 이미지 응용프로그램을 실행하는 데 .. 2021. 5. 9.
반복과 재귀 : DFS 문제를 재귀로 구현하면 편리한 이유 For문과 재귀함수 for문과 재귀함수는 '반복'을 실행할 때 사용한다는 점에서 공통점을 가지고 있다. 처음 반복문을 배울 때 대부분 for문으로 배우기 때문에, 나중에 재귀함수에 익숙해지기란 쉽지 않다. 그럼에도 재귀를 알아야하는 이유는 '함수호출과 스택 메모리' 때문일 것이다. 재귀는 '스택 메모리'를 활용한다는 특징 때문에 깊이우선탐색(DFS)과 같은 특정 알고리즘 문제를 해결할 때 유용하게 쓰이는데, 그 이유에 대해서 알아보자. 고급 프로그래밍 언어에서 함수를 호출하게 되면, 운영체제는 스택 메모리라는 곳에 그 함수만 사용할 메모리 공간을 할당해준다. 그 함수 안에서 또 함수를 호출하면, 스택 메모리에 재귀적으로 호출된 함수들의 메모리 공간이 계속 쌓이게 된다. 즉, 가장 먼저 불린 함수는 자기 .. 2021. 5. 6.