알고리즘

    [Java/프로그래머스] 숫자 문자열과 영단어

    문제 풀이 (1) 문제 분석하기 포함될 수 있는 영단어(zero ~ nine)를 담은 String 배열 생성 배열 길이만큼 for문으로 돌면서 입력 받은 문자열에 해당 영단어가 있는지 확인 → contains() 있다면, 해당 영단어를 i로 대체 → replace() String.contains() 특정 문자열 포함 확인 대상 문자열에 특정 문자열이 포함되어 있는 확인하고, true or false를 반환한다. 대/소문자 구분하여 사용이 가능하다. String.replace(찾을 문자열, 바꿀 문자열) 문자열 대체 대상 문자열을 원하는 문자 값으로 변환한다. 차례대로 찾을 문자열과 바꿀 문자열을 입력한다. replace() vs replaceAll() 둘의 차이점은? replaceAll은 정규식 사용이 ..

    [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..

    [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) 문제 분석하기 요소 하나하나에 접근하기 위해 문자열로 변환하여 split 이용 반복문 돌면서 다시 숫자로 변환하여 더해줌 (2) 슈도코드 작성하기 정답을 담을 answer 변수 선언 입력 받은 n을 String으로 변환 split을 이용하여 String형 배열로 변환 for(String 배열의 길이만큼){ int형으로 변환하여 정답에 넣기 } 정답 변수 answer 출력 (3) 코드 구현하기 package algorithm.test06; public class Solution { // 숫자를 문자열로 변환 // split으로 문자열 배열로 변환 // 반복문 돌면서 parseInt로 바꿔준 배열 요소 하나하나를 answer에 더함 public static int solution(int n..

    [Java/프로그래머스] 수박수박수박수박수박수?

    문제 풀이 (1) 문제 분석하기 n의 길이의 짝홀수를 판별하여 i가 짝수이면 "수"를, 홀수이면 "박"을 더함 (2) 슈도코드 작성하기 정답을 담을 String 변수 answer를 선언 for(입력 받은 변수 n까지) { n 길이의 짝홀수를 판별하여 "수" or "박"을 answer 변수에 담음 } answer 반환 (3) 코드 구현하기 package algorithm.test03; public class Solution { // n까지 for문을 돌면서 // i가 짝수이면 "수"를 붙이고 // i가 홀수이면 "박"을 붙인다 public static String solution(int n) { String answer = ""; for (int i = 0; i < n; i++) { answer += (i..