728x90

스파르타 이노캠 48

2023. 06. 26 월 - Springboot CRUD 기능 구현

확실히 워밍업 기간때 살짝 사용해봤던 python보다는 좀 어려운 느낌이다. 일단 기초 강의 내용을 바탕으로 CRUD를 나름대로 구현해보긴 했다. 과제 목표 자체가 서버단의 CRUD기능을 익숙하게 만드는 거라, 구현된 기능을 Postman을 사용해서 백엔드에서의 작동만 테스트해보면 됐는데, 괜히 웹으로 열어서 테스트해보고 싶어서 index.html을 이래저래 건드리느라 시간이 더 걸렸다. 그리고, Spring 강의를 들으면서, 자체 편의기능이 생각보다 더 많다는 것을 알게 됐다. 기초 강의에서는 그런 부분을 사용할 여지가 없어서 잘 알 수 없었는데, Spring강의에서는 코드에 필요한 import가 자동으로 입력된다거나 정의되지 않은 메서드를 먼저 참조형식으로 작성해놓고 Alt+Enter를 누르면 알맞은..

2023.06 본 과정 Week02 WIL - 알고리즘 문제 풀이/Spring 강의

Fact 알고리즘 문제 중 조금 더 난이도 있는 문제들을 풀어보았다. Spring 첫 번째 과제를 위한 강의를 들었다. Feeling 알고리즘 문제를 푸는 데에는 꽤 많은 실력 향상이 있었던 것 같다. 알고리즘 문제를 풀 때 자주 사용되는 유용한 구문들에 익숙해지는 것 자체가, 문제를 푸는 방법을 생각해내는 데에 많은 도움이 된 것 같다. Spring강의를 처음 들었을 땐, 앞으로 가야할 길이 멀다는 것을 직감적으로 느끼게 된 것 같다.. Finding 알고리즘 문제를 풀어낼 때는 물론 문제를 분석하고 해결하는 능력이 높은 것도 큰 도움이 될 수는 있겠지만, 문제해결법을 생각해내더라도 그 방법을 수행하기 위한 기능들을 알지 못하면 결국 해결해낼 수가 없다는 것을 알게 되었다. Spring 강의의 경우 강..

2023. 06. 23 금 - Spring 시작, 초기 세팅

워밍업 기간에 VSCode로 웹 페이지를 만드는 과정에서 pip install할 때 발생했었던 문제와 비슷한 일이 Spring을 시작할 때 또 발생했다. 이번엔 프로그램 자체가 설치가 안된다거나 실행이 안 되는 건 아니었는데, @DisplayName에 한글을 적고 Run할 경우 한글이 깨지는 현상이었다. 현상에 대해 검색해보니 비슷한 상황에서의 해결책이 몇 가지 있었고, 그 중 하나를 적용하니 해결이 되긴 했다. 결국 해외와 우리나라의 표준 인코딩 방식이 다르기 때문인 건 알겠는데, 그렇다고 윈도우 환경인 모든 사람한테 동일한 문제가 발생하는 것도 아닌 것 같아서 좀 의아하긴 했다. 일단 지금까지 발생했던 에러들을 계속 해결하다 보니 알게 된 건데, 일단 이런 종류의 에러가 발생할 확률이 가장 높은 환경..

2023. 06. 22 목 - 알고리즘 테스트

3문제 모두 알고리즘 자체는 금방 구현했는데, 시험 문제에서 주어진 출력 조건을 간과한 채로 작성을 했다. 2차원 배열의 값을 변형하여 출력하는 문제였는데, 문제에서는 출력방식을 문자열 하나로 개행문자와 공백을 사용해서 배열처럼 보이게 나타내라는 조건을 걸었다. ex) 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 이 조건을 제대로 확인하지 않고, 알고리즘을 거쳐 반환된 배열을 for문 안에 Arrays.toString으로 반복해서 [1,2,3,4,5] [6,7,8,9,0] [1,2,3,4,5] [6,7,8,9,0] [1,2,3,4,5] 의 형태로 출력했다. 물론 알고리즘 문제의 특성상 로직의 오류나 예외없이 효율적으로 구현됐는지가 중점이겠지만, 문제에서 주어진..

2023. 06. 21 수 - 실패율

실패율 알고리즘 문제를 풀다가. 계속 시간초과가 났다. 기본 예제는 통과됐지만, 제출용 테스트에서 어떤 예제는 400ms가 넘어가기도 하고, 시간초과가 뜨는 것도 많았다. 처음엔 각 스테이지별 fail과 clear를 변수로 나눠서 저장해뒀다가, 코드도 복잡해지고 for문을 돌리는 데에도 비효율적인 것 같아서 현재 작성중인 코드는 배열로 변경해놓았다. 실패율을 구하기 위해서 각 스테이지 별 머무르는 중인 사람과, 해당 스테이지에 도전해서 통과한 사람을 구해놓아야 했는데, 처음엔 2중for문을 써서 for(int i : stages){ if(i0; i--){ clearer[i-1]+=clearer[i]; } for(int i=0; i

2023.06.20 화 - 문자열 내 특정 문자열 대체하기

오늘 페어 프로그래밍으로 풀었던 알고리즘 문제 중, String에서 특정 문자열을 찾은 후 해당 문자열을 replace하는 문제가 있었다. 찾을 문자열이 여러개여서 arr 배열에 넣은 후 for문을 돌렸는데, for문 안에서 배열의 인덱스 탐색을 위해 증가되는 i의 값과 대체해서 넣을 문자열이 동일해서 str.replaceAll(arr[i] , "" + i ); 의 형태로 작성했었다. 시간 제한이 빠듯하지 않은 문제여서 통과는 무사히 됐지만, 제출 시 다른 알고리즘 문제에 비해 속도가 현저히 느리다는 것을 발견했다. 페어프로그래밍 이전에 이미 해당 알고리즘 문제를 풀어보셨던 조원의 코드는 시간이 꽤 빠르게 나온다고 해서, 그 코드와 비교했더니 로직은 전부 동일한데 replace 구문에서 ~.replace..

2023.06 본 과정 Week01 WIL - 숫자야구 제작/알고리즘

한 주간 있었던 학습을 4F방법론으로 정리해보려고 한다. Fact 이번 주는 과제로 숫자야구 코드를 짜보았고, 알고리즘 문제 풀이를 했다. Java강의를 통해 객체의 개념과 객체지향 관련 지식을 알게 되었다. Feeling 숫자야구 코드의 경우 기능 자체가 아주 간단하고 직관적이어서 알고리즘 문제를 풀듯이 접근했던 것 같다. 그래픽만 없을 뿐 실제 게임처럼 동작할 수 있도록 난이도 선택이나, 자릿수 선택 등의 코드를 고민해보고 짜는 게 재미있었다. 또 java강의를 통해 알게 된 객체지향의 개념은 좀 낯설긴 했지만, 객체지향의 장점이 무엇인지는 확실히 알 수 있었다. Finding 숫자야구 코드를 짜면서, 발생할 수 있는 예외를 분석해보고 처리하는 시간이 있었다. 다른 프로그램 제작 시 작동하는 과정에서..

2023. 06. 14 수 - 숫자야구 upgrade ver. 제작

강의를 듣다가, 랜덤을 구현할 만한 더 좋은 방법이 떠올라서 코드를 전체적으로 바꿔봤다. 앞의 코드랑 비교해 봤을 때, 중복되는 숫자가 자연스럽게 걸러지게 되면서 3자리 뿐 아니라 4자리 숫자 야구도 동일한 로직을 사용해서 랜덤 숫자를 생성할 수 있게 됐다. 그리고 Strike, Ball을 판단하는 근거를 만들어주는 contains()를 따로 생성해서, 입력받은 각 자리를 각각의 변수에 대입하지 않고 tmp변수 하나를 for구문으로 돌려서 파악해줄 수 있게 되었다. 이것도 마찬가지로 앞의 3자리 전용 코드에서는 할 수 없었던 자릿수 변경으로부터 비교적 자유롭게 해줘서, 3또는 4를 입력받아 4자리수 숫자야구 게임도 진행할 수 있도록 바꿔보았다. 그리고 게임이 끝나고 나면, 아무 키나 눌러 다시 처음부터 ..

2023. 06. 13 화 - 숫자 야구 / Input issue / AI

숫자야구 코드 작성 시, 이전 알고리즘 문제를 풀 때 BufferedReader를 사용하는 것이 Scanner보다 더 빠르게 작동한다는 사실을 알게 되어서 BufferedReader를 사용해서 작성했었다. 이후 ChatGPT에 코드 리뷰를 요청해봤는데, Scanner 클래스를 사용해서 간편하게 입력받을 수 있다는 개선점을 제시해주었다. ChatGPT가 Scanner를 추천해준 이유는 다음과 같았다. BufferedReader와 InputStreamReader를 사용하여 사용자 입력을 받는 방식은 좀 더 저수준의 입출력 처리 방식입니다. 이는 몇 가지 단점을 가지고 있습니다. 복잡한 구현: BufferedReader와 InputStreamReader를 사용하면 입력을 받는 부분이 상당히 복잡해집니다. tr..

2023. 06. 12 월 - Git과 Github사용

지난 주 팀 미니 프로젝트 때 몰라서 사용하지 못했었던 git과 github를 사용해보았다. 미니 프로젝트 때 작업해서 이미 완성된 파일을 올리는 방법은 매우 간단해서 별다른 문제가 없었는데, 오늘 차 조 과제인 S.A. Github 과정에서 내가 Pull request한 파일이 충돌이 일어났었다. 당시 상황 자체는 정확하게 기억이 안나지만, 아마 내가 작성하는 동안 조원 분이 한 번 pull request로 업데이트 했는데 이후 내가 pull하는 과정에서 뭔가 빠졌던 것 같다. 어쨌든 github에서 fork하고 있던 원격 스토리지의 파일에 갱신이 발생했을 때, 그 파일을 fetch로 가져와서 최신 파일을 merge하여 작업중인 파일과의 충돌을 확인 후 진행해야 한다. 과제 제출 자체는 Reposito..

728x90