코딩테스트 16

프로그래머스 코팅테스트 문제: 체육복

프로그래머스 level1의 문제이다. 오늘 하루종일 알고리즘 문제를 너무 못풀었다. !자신감 회복!을 위해 푼 문제였는데 처음에 오답이 나와서 정말 당황했다. 하지만 문제를 다시 읽어보니...함정이 있었다! 그 함정을 빼면 쉬운 문제였다 정말 많은 풀이들이 생각이 났다. 문제자체는 쉽지만 어떤 풀이를 선택하냐에 따라 받을 수 있는 점수가 달라질 것 같았다. 그래서 level1인 만큼 원초적인 풀이를 해보고 싶었다. class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer =0; int student[]=new int[n]; for(int i=0;i

프로그래머스 코딩테스트 문제: 카펫

프로그래머스 level2의 문제이다. level2문제치고 쉬운편이었던 것 같다 고등학교때 정말 자주 봤었던 유형의 문제이다...! 그래서인지 너무 처음에 너무 수학적으로 접근했었던 것 같다. 다른 사람들의 답안을 보니까 다들 간결하게 쓴 것 같다. 나같이 푼사람은 ....못본 것 같다.... import java.util.*; class Solution { public int[] solution(int brown, int red) { int[] answer = new int[2]; boolean flag=true; ArrayList arr=new ArrayList(); for(int i=red;i>0;i--){ if(red%i==0){ for(int j=0;j

프로그래머스 코딩테스트 문제: 스킬트리

프로그래머스 level2에 해당하는 문제이다. 문제를 풀면서 반복문이 너무 많이 나와 굉장히 당황했었다. 하지만 for문을 쓸 때 continue와 break문을 적절하게 사용하면 for문이 크게 문제가 되지는 않는 것 같다. 정답을 맞추고 다른 사람들의 풀이를 보고 내가 너무 바보같이 느껴졌었다.. skill의 순서는 index값 자체이기 때문에 hash에 따로 정의하지 않았어도 됐다...정말 바보같지만 hash공부를 한번더 한셈치자! for문 제어도 공부했으니까! (hash의 valuer값으로 순서를 지정해주지 않고 그냥 char의 index값으로만 해결이 된다) 다른 사람들의 풀이중 hash를 쓴 사람은 없었고 점수 또한 좋게 받은 것에 의의를 둔다...! import java.util.*; cla..

프로그래머스 코딩테스트 문제: 다리를 지나는 트럭

level2의 문제이고 꽤나 난이도 있는 것 같다. 다리를 지나고 있는 하나하나의 트럭이 다리에 들어온지 몇초가 지났는지를 아는 것이 제일 까다로웠다. 그래서 검색찬스... 원래는 ArrayList로 전부 구현하려고 했으나 queue연습을 위해 이를 이용했다. 내가 궁금했던 다리에 들어온지 몇초가 지났는지에 대한 것은 truck을 class로 만들어버리는 것으로 해결가능했다. 트럭이 가지고 있는 정보는 무게 뿐만이 아니라 다리에 진입하고 지난 시간도 포함했어야 했다. 그이후에는 크게 어렵지 않은것 같았다. 다리에 올라와있는 Array는 Queue를 사용하지 않았다. 다리에 올라와 있는 트럭이 몇대인지 모르는 상황이다. 이 때 다리에 올라와 있는 트럭 모두에게 index값(다리에 올라오고 지난 시간)을 계..

프로그래머스 코딩테스트 문제: 가장 큰 수

level2의 문제이다. 보기엔 간단한 숫자 정렬 문제 같지만, 숫자를 int형이 아닌 String으로 해결해야하는 생각보다 까다로운 문제이다. 또한 엄청난 함정이 하나있다...! 간단하게 생각해서 큰 수가 앞에오면 된다는 생각은 절대절대 하면 안된다. 이 문제에서 큰 수를 만들기 위해서는 숫자를 띄어서 생각해야한다. 예를들어 10을 10자체로 보기보단 1,0 으로 보는 것이다. 모든 정수를 이었을때 제일 큰 자리수의 숫자가 클수록 큰 수가 된다. import java.util.*; import java.lang.*; class Solution { public String solution(int[] numbers) { String answer = ""; String[] arr=new String[numb..

프로그래머스 코딩테스트 문제: 올바른 괄호

프로그래머스 level2의 문제이다. 쇠막대기라는 문제와 꽤 유사해서 한번에 stack을 사용하면 될 것 같았다. 단순하게 (와 )의 개수가 같을 것 이라고 생각하면 안된다. 개수는 맞을지라도 짝이 맞지 않으면 안되니! import java.util.*; class Solution { boolean solution(String s) { boolean answer = true; Stack stc=new Stack(); for(int i=0;i

프로그래머스 코딩테스트 문제: 문자열 내 마음대로 정렬하기

프로그래머스 코딩테스트 level1문제이다. Arrays.sort 와 comparator을 자유롭게 사용한다면 쉬운 문제이다! import java.util.*; import java.lang.*; import java.math.*; class Solution { public String[] solution(String[] strings, int n) { String[] answer = strings; Arrays.sort(answer, new Comparator(){ public int compare(String a, String b){ if((a.substring(n,n+1)).equals(b.substring(n,n+1))){ return a.compareTo(b); } return (a.subst..

프로그래머스 코딩테스트 문제: 전화번호 목록

프로그래머스 코딩테스트 level2에 해당하는 hash문제이다. 나는 hash문제라고 떡하니 적혀있어서 hash로 풀려고 노력했다. 다른사람들의 답안을 보니 그냥 순수배열로 푼 사람들이 많았다. 내가 생각하지 못한 함수들을 많이들 쓴 것 같았다. import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; HashMap hash=new HashMap(); for(int i=0;i