코딩테스트 47

[프로그래머스] 푸드 파이트 대회

1. 내 답안StringBuilder로 작업했다.class Solution { public String solution(int[] food) { StringBuilder sb = new StringBuilder(); for(int i = 1 ; i 2. 다른 분들 답안문자열 앞뒤에 횟수만큼 새로 덧붙여준다.class Solution { public String solution(int[] food) { String answer = "0"; for (int i = food.length - 1; i > 0; i--) { for (int j = 0; j  3. 실행 시간 비교 - 아래가 내 코드, 위에가 다른 분 코드이다.- 내 코..

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

TreeSet을 적절하게 사용할 줄 아는가? 1. 초기 버전 코드다른 사람들 코드 훔쳐보는데 TreeSet 사용하면 정렬도 같이 된다는 말에 아맞다! 그게있었지! 했다. 그래서 코드를 리팩토링 해보았다.import java.util.*;import java.util.stream.*;class Solution { public int[] solution(int[] numbers) { Set set = new HashSet(); for(int i = 0; i list = new ArrayList(set); Collections.sort(list); return list.stream().mapToInt(i -> i..

[프로그래머스] 가장 가까운 같은 글자

1. 내 풀이alphabet을 char로 해석해서, int값으로 내려놓으면 26개의 배열 내로 모든 알파벳이 어디에 있는지 인덱스를 알 수 있다.class Solution { public int[] solution(String s) { int[] alphabet = new int[26]; int[] answer = new int[s.length()]; for(int i = 0; i   2. 다른 분 풀이Map을 사용하셨다. map의 getOrDefault함수도 사용하셨다.원리는 같지만 훨씬 세련되게 풀었다. 보고 배워야지!import java.util.*;class Solution { public int[] solution(String s) ..

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

https://school.programmers.co.kr/learn/courses/30/lessons/12926 1. 내 풀이StringBuilder를 이용해 효율성을 잡았다.아래 분의 풀이처럼 풀면 result += ~~ 할때마다 새로운 객체가 할당되어 메모리 낭비 & CPU 자원이 낭비될 수 있다. 이게 다 효율성에서 나중에 걸리니 미리미리 StringBuilder 사용하는 습관을 들여두는게 좋을 것 같다.class Solution { public String solution(String s, int n) { char[] chars = s.toCharArray(); StringBuilder sb = new StringBuilder(); for(int i =..

[프로그래머스] 이상한 문자 만들기

1. 내 코드StringBuilder를 통해 값 변경 가능한 곳으로 옮겨주고 쌩구현했다.나는 보통 쌩으로 구현하는 경우가 많은 것 같다. API를 좀 더 잘 이용하는 방법이 필요해보인다.class Solution { public String solution(String s) { StringBuilder sb = new StringBuilder(s); int wordIdx = 0; for(int i = 0; i= 'a' && ch = 'A' && ch      2. 다른 사람 코드공백이 여러 개일 수도 있다는 말에 번거로울 것 같다고 생각해서 split 하지 않았는데, 오히려 하니까 좋은 것 같다.그리고 공백에도 toLowerCase(), toUpperCase()..

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

1. 내 풀이쌩으로 구현했다.import java.util.*;public class Solution { public ArrayList solution(int []arr) { ArrayList answer = new ArrayList(); int insertIdx = 0; for(int i = 0; i   2. 다른 분 풀이문제의 의도대로 stack을 이용해서 푼 모습을 볼 수 있다.import java.util.*;public class Solution { public Stack solution(int []arr) { Stack stack = new Stack(); for(int num : arr){ ..

[프로그래머스] 문자열 다루기

https://school.programmers.co.kr/learn/courses/30/lessons/12918?language=java 1. 본인 풀이- 길이가 4나 6이 아니면 바로 리턴- for문 돌며 숫자가 아니면 바로 리턴- 리턴이 안되면 결국 trueclass Solution { public boolean solution(String s) { if(s.length() != 4 && s.length() != 6) return false; for(int i = 0; i= '0' && c  2. 예외처리 활용- 길이가 4나 6인 것 중 int로 변환이 가능하면 문자가 없다는 뜻이므로 true, 변환불가능하면 문자가 있다는 뜻이므로 false- 기발한 생각이지만 자바 ..