본문 바로가기

Java/알고리즘63

올바른괄호 저번엔 스택을 사용하지않고 풀었다. 이번엔 스택을 이용해 풀었다. 풀이과정을 설명해보자면 1) Character를 담는 Stack을 하나 초기화해준다. 2) String s 를 하나씩 char로 배열을 만들어서 반복한다. 3) 맨처음 '('가 들어오면 stack에 넣는다. 만약 맨처음 ')'가들어가게되면 false return 4) 만약 stack에 '('가 들어가있다치자, '('가 들어가면 그대로 넣게되고, ')'가 들어가면 들어가있던 '('를 뺀다. 5) 반복문을 다 돌고나서 ')'가 남아있으면 false이니, stack.isEmpty를 해준다. **그냥 마지막에 return true 했더니 틀렸다. "(()(" 일때, return true해버리면 true를 반환해서 실패한다. 그래서 마지막에 sta.. 2024. 2. 14.
최솟값만들기 A와 B의 원소를 하나씩 뽑아 곱하고 더한값중 최솟값이 되는 경우를 찾는것이다. 지난번에도 이번에도 역시 똑같이 생각했다. A에선 가장 작은 수 * B에선 가장 큰 수를 계산해준다. ㅇ 풀이 public int solution(int[] a, int[] b){ Arrays.sort(a); Arrays.sort(b); int answer = 0; for(int i = 0; i < a.length; i++) { answer += a[i] * b[a.length-i-1]; } return answer; } a와 b둘다 오름차순으로 정렬해준다. 그리고 a의 가장 작은수와 b의 가장 큰수를 곱해주고 누적시킨다. 끝. 2024. 2. 13.
JadenCase 문자열 ㅇ 1차풀이 public static String solution(String s) { StringBuilder result = new StringBuilder(); String answer = ""; for (char c : s.toCharArray()) { if (Character.isLetter(c)) { result.append(Character.toLowerCase(c)); }else { result.append(c); } } String convertS = result.toString(); String[] S = convertS.split(" "); for(int i = 0; i < S.length; i++) { if(Character.isLetter(S[i].charAt(0))){ S[i]=.. 2024. 2. 8.
다시 lv2로 lv1만푸니깐 자료구조를 공부할수없어 다시 lv2로 돌아왔다. 풀었던 문제긴한데 다시 풀어봤다. 띄어쓰기를 기준으로 split 한다음, min max 를 split 한 배열의 첫번째 원소로 잡고, 반복문으로 한번 돌고 가장작으면 min, 가장 크면 max 해서 return 해줬다. 지난번엔 sort 해서 풀었던데, s가 String 이기도하고 '-'가 붙으면 역순으로 정렬되기도 해서 안된다. ㅇ 풀이 public String solution(String s) { String[] S = s.split(" "); int min = Integer.parseInt(S[0]); int max = Integer.parseInt(S[0]); for(int i = 0; i < S.length; i++){ if(min .. 2024. 2. 7.