알고리즘 48

[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] Gigasecond #Duration #Named parameter

https://exercism.org/tracks/dart/exercises/gigasecond/iterations?idx=2 Exercism Learn, practice and get world-class mentoring in over 50 languages. 100% free. exercism.org 문제 자체는 정말 단순하게 gigasecond를 더하면 되는데, Duration을 처음 써볼 수 있었다. Duration은 말 그대로 기간을 나타내는 클래스인데, DateTime 클래스와 같이 많이 쓰는 것 같다. Dart에서 마음에 드는 것 중 하나는 named parameter인데, 이렇게 arguments가 어떤 값인지 바로 알 수 있어서 좋다. (자바는 named parameter가 없고, 코틀..

Language/Dart 2022.09.08

[Exercism] Hamming

https://exercism.org/tracks/dart/exercises/hamming Hamming in Dart on Exercism Can you solve Hamming in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org 두 개의 주어진 문자열을 자리마다 비교해서 값이 다른 개수를 리턴하는 문제이다. 문제 조건에서 둘 중 하나가 empty이거나 길이가 다르면 에러를 던지도록 되어 있어서 먼저 에러 처리를 해주고, for문으로 각 자리를 비교해 다른 경우를 count하였다. if문에서 조건은 메서드로 분리를 해주는게 가독성이 더 좋다고 생각해서, 간단한 로직이지만 별도로 분..

Language/Dart 2022.09.08

[Excercism] Space Age #enum

https://exercism.org/tracks/dart/exercises/space-age Space Age in Dart on Exercism Can you solve Space Age in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org  행성과 초seconds가 주어지면 조건에 따라서 나이를 계산하는 문제이다. 각 행성들의 공전 주기가 Earth Year로 주어졌기 때문에 1) 행성별로 One Earth Year을 구하고, 2) 주어진 초를 지구 나이로 환산한 뒤에 2) / 1)로 답을 구했다. 비슷비슷한 개념이 많아서 메서드명이나 변수명을 어떻게 만들어야 하는지 고민이 되..

Language/Dart 2022.09.08

[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

[프로그래머스] K번째수 #Arrays.copyOfRange

https://programmers.co.kr/learn/courses/30/lessons/42748?language=java 주어진 조건에 따라 배열에서 원하는 값을 찾아서, 배열로 출력하는 문제이다. int배열을 주어진 범위를 index로 잘라서 복사하는 메서드를 새로 알게 되었다. java.util.Arrays에 있는 메서드이다. 배열이기 때문에 from과 to가 배열의 범위를 벗어나면 에러가 발생한다. public static int[] copyOfRange(int[] original, int from, int to) { int newLength = to - from; if (newLength " + to)..

Language/JAVA 2022.07.01

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

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