알고리즘 48

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

https://programmers.co.kr/learn/courses/30/lessons/81301 문자열에 포함된 영단어가 있을 때 이를 숫자로 바꿔주는 문제이다. 처음에는 배열로 변환해서 바꿔야 한다고 생각해서, 이걸 어떻게 배열로 바꾸지 고민했는데 문자열을 대체할 수 있는 replace를 사용해서 해당하는 문자의 값을 바꾸면 된다. class Solution { public int solution(String s) { String[] arr = new String[]{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for (int i = 0; i < arr.length; i++) { //포함하고 있을 ..

Language/JAVA 2022.01.27

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

https://programmers.co.kr/learn/courses/30/lessons/12917 문자열을 char배열로 전환해서 정렬 후 다시 String으로 만들어주었다. import java.util.Arrays; class Solution { public String solution(String s) { String answer = ""; char[] arr = s.toCharArray(); Arrays.sort(arr); for (int i = arr.length-1; i >= 0; i--) { answer += arr[i]; } return answer; } } 마지막에 for문으로 돌려주었는데, StringBuilder를 사용할 수 있다. public class ReverseStr { p..

Language/JAVA 2022.01.27

[프로그래머스] 문자열 내 마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915 문자열 배열이 주어지고, 해당 문자열의 특정 인덱스(n)를 기준으로 배열을 정렬하는 문제다. 특정 인덱스의 문자만 추출해서 배열을 정렬하고 나서 1. 이걸 이용해 원래의 배열을 정렬하는 부분 2. 인덱스 문자열이 같을 경우 사전순으로 배열하는 부분 이 어려웠다. 1.은 특정 인덱스의 문자를 추출한 배열은 원래 배열의 위치와 동일하기 때문에 이를 활용하기 위해 그대로 두고, 정렬을 위해 clone();으로 복사본을 새로 만들었다. 그래서 정렬된 배열(wordSort)과 원래 배열(word)을 비교하여 정렬 순서대로 해당되는 index를 찾고 이 index에 해당하는 strings값을 answer배열에 하나..

Language/JAVA 2022.01.26

[프로그래머스] 소수 찾기

https://programmers.co.kr/learn/courses/30/lessons/12921 import java.util.Arrays; class Solution { public int solution(int n) { //n+1개의 배열을 만들기 boolean[] arr = new boolean[n+1]; //초기화 : 모든 값을 true로 입력 Arrays.fill(arr, true); //0과 1은 소수가 아니니 제외 arr[0] = arr[1] = false; //2부터 시작 //아래 for문에서 배수에 해당하는 수는 모두 지울 것이므로 횟수 제한 for (int i = 2; i*i

Language/JAVA 2022.01.21

20220120 개발일지(WIL)

이번 주차는 알고리즘 기초 주간이었다. 개발일지라기보다는, 공부일지에 가까운 것 같다. 알고리즘 주간이었지만 실제 알고리즘을 공부했다기 보다는 JAVA 기본 문법을 익히는 시간이었다. 선정된 문제들은 프로그래머스 level 1 단계 문제들로, 찾아보니 1단계는 알고리즘에 대한 지식없이도 기본 문법을 가지고도 풀 수 있는 문제라고 한다. 처음에 JAVA라는 언어에 매력을 느꼈던 부분 중 하나는 타입과 관련된 부분이었다. 그런데, 실제 공부하면서 특히 초창기에 가장 힘들었던 부분도 타입이었다. 타입에 따라서 사용할 수 있는 메소드가 너무 달랐고, 문제에서 요구하는 타입으로 변환해서 반환하는 것도 힘들었다. 특히 처음에는 자바가 어떤 언어인지, 메소드는 어떻게 쓰는 건지, 어떤 식으로 동작하는지 파악이 안되서..

[프로그래머스] 모의고사

https://programmers.co.kr/learn/courses/30/lessons/42840#qna import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int[] answers) { //수포자별로 배열을 만들기 //찍는 방식을 배열로 생성 int[] p1a = new int[]{1, 2, 3, 4, 5}; int[] p2a = new int[]{2, 1, 2, 3, 2, 4, 2, 5}; int[] p3a = new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int[] p1 = new int[answers.length];..

Language/JAVA 2022.01.20

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

https://programmers.co.kr/learn/courses/30/lessons/12906 import java.util.*; public class Solution { public int[] solution(int []arr) { //add 사용, 답안 배열의 길이를 모르기 때문에 ArrayList사용 List num = new ArrayList(); num.add(arr[0]); //num 배열의 index 선언 int k = 0; for (int x : arr) { if(!num.get(k).equals(x)) { num.add(x); k++; } } // for (int i = 0; i < arr.length; i++) { // if(!num.get(k).equals(arr[i])) {..

Language/JAVA 2022.01.20

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

https://programmers.co.kr/learn/courses/30/lessons/86491 이중배열 문제이다. 이중배열에서 원하는 값을 어떻게 꺼낼지, max를 어떻게 구할지에서 많이 헤맸다. 명함의 크기를 조정한다는 부분을 처음에 엄청 복잡하게 생각했었는데, 가로가 세로보다 큰 값으로 모두 통일하면 간단히 해결할 수 있는 문제였다. class Solution { public int solution(int[][] sizes) { //가로 세로 중 가로에 큰 값이 오도록 조정 for (int i = 0; i < sizes.length; i++) { if (sizes[i][0] < sizes[i][1]) { int a = sizes[i][0]; int b = sizes[i][1]; sizes[i]..

Language/JAVA 2022.01.19