오늘의 개발

    [Java/프로그래머스] 문자열 내림차순으로 배치하기

    문제 풀이 (1) 문제 분석하기 문자열을 char 형 배열로 변환 → str.toCharArray() char형 배열을 정렬 → Arrays.sort(charArr) char형 배열을 문자열로 변환 → String str = new String(charArr) 역정렬을 위해 StringBuilder로 받기 → StringBuilder strBuil = new StringBuilder(str) reverse() 적용 → String reversStr = strBuil.reverse().toString() (2) 슈도코드 작성하기 문자열을 char형 배열로 변환 char형 배열을 오름차순으로 정렬 StringBuilder로 받아서 내림차순으로 정렬 하도록 reverse() (3) 코드 구현하기 package..

    [TIL] 2주차 알고리즘 코드 리뷰, Java 스터디

    ✍ Today I Learned Java 스터디 시작 새롭게 한 주가 시작되면서 2주차에 접어들었다. 오전 9시 언어 스터디 발제를 시작으로 6주간의 언어 스터디도 함께 하게 되었다. 지난 pre-onboarding 주차 때 공부했던 책 [혼자 공부하는 자바]를 가지고 매일 하루 30분씩 스터디 조원들과 언어에 대한 기본기를 다지는 시간이다. 우리 조는 월~금까지는 개인 공부를 진행하고 토요일에 각자 맡은 챕터를 발표하기로 했다. 나는 바로 이번주에 함께 공부할 6 챕터 - 클래스를 맡아 발표를 진행하게 되었다. 알고리즘 주간과 같이 진행되기 때문에 조금 부담이 되기도 했는데, 확실히 다른 사람에게 설명해주면서 스스로 더 이해하는 스타일이라 즐거운 시간이 될 것 같다! 알고리즘 코드 리뷰 옆 조의 조원분..

    [Java/프로그래머스] 로또의 최고 순위와 최저 순위

    문제 풀이 (1) 문제 분석하기 두 배열에서 같은 숫자만 일치했을 때 → 최저 순위 (같은 숫자 + 0의 개수) 만큼 일치했을 때 → 최고 순위 순위는 간편하게 배열로 만들어 인덱스로 접근 (2) 슈도코드 작성하기 순위를 인덱스로 접근할 수 있게 score 배열 생성 두 배열의 같은 숫자를 세는 same_nums와 0의 개수를 세는 zero_count 변수 선언 for(lottos의 길이만큼) { for(win_nums의 길이만큼) { if(lottos와 win_nums의 i번째, j번째가 같다면) { same_nums 1 올려주기 } } if(lottos의 i번째가 0이라면) { zero_count 1 올려주기 } } 최고 순위는 socre[same_nums + zero_count] 최저 순위는 soc..

    [WIL] 항해99 1주차 회고ㅣ웹 미니 프로젝트

    이번주 톺아보기 2022.11.14 [TIL] 1주차 미니 프로젝트 시작 2022.11.15 [TIL] Flask 로그인/회원가입 구현하기(JWT, 유효성 검사) 2022.11.16 [TIL] 1주차 미니 프로젝트 협업과 에러 2022.11.17 [TIL] 1주차 미니 프로젝트 발표 2022.11.18 [TIL] 1주차 알고리즘 주간 시작 2022.11.19 [TIL] 1주차 알고리즘 문제 풀이에 대해 잘한 점 1주차 미니 프로젝트 [커피덕후]를 잘 마무리했다. 4일간 잠을 줄여가며 개발에만 매진했다. 의견이 나왔던 모든 기능을 개발한 건 아니지만 처음 기획했던 최소한의 기능들은 전부 구현했다. 최종적으로 완성이 목표였기 때문에 꽤나 만족스러운 프로젝트라고 할 수 있다. JWT 인증 방식을 이용하여 회원..

    [TIL] 1주차 알고리즘ㅣ문제 풀이 꿀팁

    나의 알고리즘 풀이 루틴 문제를 조금씩 풀어가며 만들고 있는 나만의 루틴이다. 문제에 따라 30분 ~ 1시간 타이머 시작 손으로 먼저 풀어보기 IDE에 적은 내용을 바탕으로 슈도 코드 주석 달기 코드로 구현하기 에러가 발생했다면 디버깅 모드 적극 활용하기 정해둔 시간 안에 풀지 못했다면 다른 사람 풀이 보고 이해하기 새롭게 알게 된 메서드와 함께 블로그에 정리하기 시간은 좀 걸리더라도 확실히 이해는 되는 중이다. 계속해서 문제를 풀고 있으니 다양한 시도를 해보면서 나에게 맞는 방식을 찾아보자. 문제 풀이 세션 공통 팁 문제를 잘 읽기 요구사항은 꼼꼼하게 읽고, 단순하게 정의해보기 입출력을 참고하자 가만히 있지 않기 입출력 테스트에 필요한 코드를 습관적으로 작성하기 필요한 변수나 자료구조에 대해서 정리하기..

    [Java/프로그래머스] 두 개 뽑아서 더하기

    문제 풀이 (1) 문제 분석하기 더하려는 두 개의 수는 서로 다른 인덱스! 이중 for문을 돌면서 배열에서 나올 수 있는 모든 두 수의 합을 HashSet에 저장 HashSet은 중복을 허용하지 않음 HashSet을 ArrayList로 변환하고 오름차순으로 정렬한 후, Array로 변환 (2) 슈도코드 작성하기 HashSet 생성 for(numbers의 길이만큼) { for(numbers의 길이만큼) { if(i와 j가 같지 않으면) { set에 numbers[i]와 numbers[j]의 합 추가 } } } HashSet을 ArrayList로 변환 int형의 배열을 ArrayList의 size만큼 생성 for(list size만큼) { ArrayList 요소를 모두 int형 배열에 담음 } 배열 오름차순..

    [Java/프로그래머스] 같은 숫자는 싫어

    문제 풀이 (1) 문제 분석하기 연속 숫자는 제거하고, 순서는 그대로 유지! Arraylist 생성하여 입력 받은 array와 비교하고 중복 없도록 list에 추가 list를 array로 변환하여 리턴 (2) 슈도코드 작성하기 Arraylist 객체 생성 list에 arr[0] 추가 for(arr 길이만큼) { if(list의 마지막과 요소와 배열이 일치 하지 않으면) { list에 arr[i] 추가 } } } list를 배열로 변환하여 리턴 (3) 코드 구현하기 package algorithm.test15; import java.util.ArrayList; import java.util.List; public class Solution { public static void main(String[] ar..

    [Java/프로그래머스] 최소직사각형

    문제 풀이 (1) 문제 분석하기 문제에 현혹되지 말자. 결국 긴 변 중에 가장 긴 변과 짧은 변 중에 가장 긴 별을 곱하면 된다. for문과 if문을 중첩으로 사용했더니 바로 시간초과가 나버렸다...! 배열의 정렬을 이용해보자. 최대수, 최소수를 구해주는 Math.max, Math.min을 이용해보자. (2) 슈도코드 작성하기 // 첫번째 풀이 각 변을 담을 int 변수 biggerSideMax, smallerSideMax 선언 for(sizes의 길이만큼) { if(첫번째 요소가 두번째 요소보다 클 때) { if(긴 변의 요소가 biggerSideMax 보다 클 때 { biggerSideMax에 긴 변 요소 담기 } if(짧은 변의 요소가 smallerSideMax보다 클 때) { smallerSide..