전체 글 62

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

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

프로그래머스 코딩테스트 문제: 쇠 막대기

프로그래머스 level2의 문제이다. 문제를 이해하는데 시간이 좀 필요했다. 위의 그림을 자세히 보자. 레이저를 만난 쇠막대기는 절단이 된다. (는 막대기가 시작된 지점이고 )는 막대기가 끝난 지점이다. 막대기가 시작되고 쇠막대기를 만나면 잘리게 된다. 따라서 레이저를 만났을때 아직 (를 만나지 않은 )의 개수가 잘린 막대기의 개수가 된다. 그리고 )를 만났을때는 나머지 1개의 막대기가 생성되게 된다. 이때, 막대기와 레이저의 구분이 애매하기 떄문에 ()로 나타난 레이저를 replace함수를 이용해 @로 바꿔준다. )를 만나 막대기가 끝났다는 것을 알기 위해서는 stack이 필요하다. )는 자신 이전에 최신으로 들어온 (를 만나야 ()을 이루기 때문이다. 1.(를 만나면 push한다. 2.레이저인 @를 ..

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

프로그래머스 코딩테스트 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

프로그래머스 코딩테스트 문제: 스파이

프로그래머스 코딩테스트 level2에 해당하는 문제이다. 처음에 문제보고 당황했다... 그럼 스파이는 오늘 바지를 안입은거야..? 아무것도 안입고 모자만 쓰고 나가도 되는거야...? 스파이야 변태야? hash문제이므로 HashMap을 사용하였다. import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; HashMap hm = new HashMap(); for(int i = 0; i < clothes.length; i++) hm.put(clothes[i][1], hm.getOrDefault(clothes[i][1], 0) + 1); for(String key : hm.keySet()) answe..