Computer Engineering 57

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

프로그래머스 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..

프로그래머스 코딩테스트 문제: 폰켓몬

일단 문제 이름이 너무 귀엽다! 폰켓몬! 프로그래머스 코딩테스트 level1에 해당하는 문제이다. 지난 글에서 푼 문제를 풀면서 순수 배열로만 구현하는데 너무 얽매여 있었나보다. 문제를 보자마자 배열로만 풀어야겠다는 생각밖에 하지 못했다ㅜㅜㅜㅜ 다른 사람들의 답을 보자마자 아차싶었다. hash, ArrayList로 구현한 답들이 대부분을 차지했다. 어쩐지...코드를 쓰면서 이게 맞나 싶었지만... 꾸역꾸역 순수 배열로 구현해버렸...ㄷ..ㅏ.... 코드에서 냄새가 난다.... 부끄러운 코드다... 한가지에 너무 몰입하지말고 여러가지 경우의 수를 생각해보고 코딩을 시작하자. public int solution(int[] nums) { int answer = 1; int max=nums.length/2; b..