코딩테스트 44

[Exercism] Anagram #sort!!!!!

https://exercism.org/tracks/dart/exercises/anagram Anagram in Dart on Exercism Can you solve Anagram in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org word와 list가 주어지고, list 안에서 word의 글자들을 바꾼 경우(즉 각 알파벳의 개수도 같아야 한다)에 해당하는 단어들만 찾는 문제이다. 대소문자를 구분하지 않고 완전히 일치하는 경우에는 답이 아니다. 처음에 문제를 풀었던 방식은 다음과 같다. 결국 알파벳 하나하나를 살펴봐야 하니까 for문을 돌릴 수 밖에 없다고 생각했다. class An..

Language/Dart 2022.09.21

[Exercism] Rna Transcription

https://exercism.org/tracks/dart/exercises/rna-transcription Rna Transcription in Dart on Exercism Can you solve Rna Transcription in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org 주어진 String에서 특정 단어를 변경하면 되는 문제이다. 함수형 프로그래밍에 아직 익숙하지 않아서, 가급적 함수형으로 해보려고 노력중이다. split으로 iterable을 만들고 map을 돌려서 조건에 해당하는 경우에는 글자를 바꿔주었고, reduce로 다시 새로운 String으로 만들어서 retu..

Language/Dart 2022.09.18

[Exercism] Bob

https://exercism.org/tracks/dart/exercises/bob Bob in Dart on Exercism Can you solve Bob in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org 주어진 질문에 따라 알맞은 반응을 return 하는 문제이다. 정규표현식을 활용해서 각 조건을 만들어 주었다. 문제 자체가 많이 어렵지는 않았는데, 조건이 여러 개 들어가다보니 조건을 체크하는 순서도 고려해야 했다. 조건을 크게 isQuestion과 isYelling으로 구분할 수 있는데, 둘 다 적용되야 하는 경우를 가장 먼저 제시해주고, 그 다음에 각 조건에 맞는 경우를 ..

Language/Dart 2022.09.08

[프로그래머스] 예산

https://school.programmers.co.kr/learn/courses/30/lessons/12982?language=java 이 문제의 포인트는 두 가지이다. 1. 예산을 가장 많이 지급하려면, 신청한 금액이 적은 부서들에게 지급하면 된다. → 정렬 2. 지급한 금액이 budget 보다 크면 더 이상 지급할 수 없다. → break import java.util.Arrays; class Solution { public int solution(int[] d, int budget) { int answer = 0; int sum = 0; //1. 정렬 Arrays.sort(d); for (int i = 0; i < d.length; i++) { sum += d[i]; //2-1. 지급한 금액이 ..

Language/JAVA 2022.07.15

[프로그래머스] 신규 아이디 추천

https://programmers.co.kr/learn/courses/30/lessons/72410 class Solution { public String solution(String new_id) { String answer = new_id //1. 소문자로 치환 .toLowerCase() //2. 알파벳 소문자, 숫자, -, _, . 제외하고 모든 문자 제거 .replaceAll("[^\\.\\-_0-9a-z]", "") //3. 마침표.이 2번 이상 연속된 부분 하나로 치환 .replaceAll("[.]+", "."); //4. 마침표가 처음이나 끝에 위치한다면 제거 if (answer.startsWith(".")) answer = answer.substring(1); if (answer.ends..

Language/JAVA 2022.01.29

[프로그래머스] 시저 암호

처음에 n이 커서 알파벳 범위를 여러 번 도는 경우를 생각하지 못해서 통과하지 못했다. n 대신 26으로 나눈 값 k를 더해줘서 알파벳 범위 안에서만 돌도록 조정해주었고, 대문자와 소문자로 경우를 나누어서 Z나 z는 추가로 -26을 해주었다. class Solution { public String solution(String s, int n) { String answer = ""; //char배열로 바꿈 char[] arr = s.toCharArray(); for (int i = 0; i < arr.length; i++) { //알파벳 안에서만 돌면 되므로 26으로 나누어서 나머지값만 더함 int k = n % 26; //대문자인데 더했을 때 'Z'보다 크거나, 소문자인데 더했을 때 'z'보다 크면 -2..

Language/JAVA 2022.01.27

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

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