본문 바로가기
반응형
SMALL

자바 알고리즘22

백준 9012번: 괄호 - StringBuilder 잘 활용하기(cf. sb.deleteCharAt(i)) https://www.acmicpc.net/problem/9012### 😊 잘한 점- () 패턴을 치환하여 문자열에서 차례대로 없애야겠다는 아이디어를 떠올린건 좋다.### 😢 부족한 점- 처음에는 문자열의 replace 함수를 써야겠다는 생각을 했다. 하지만 replace(")","") 이런식으로 사용하는건 해당 문자열에서 ")" 를 모두 지우는 코드다. 이렇게 하면 안된다.- 문자열을 동적으로 활용할 때는 **StringBuilder** 를 사용하자! 저번부터 느꼈지만, 문자열을 다룰 때는 웬만하면 StringBuilder 를 사용하는게 좋다. 상당히 많은 메서드를 제공하기 때문이다.- 여기서는 **sb.deleteCharAt(i)** 함수를 사용하였다.(치환이 아닌 '삭제' 기능을 이용!)- 또 .. 2024. 11. 17.
21. 아나그램(해쉬) import java.util.*; public class Main { public String solution(String a,String b) { String answer = "YES"; HashMap map = new HashMap(); for(char x: a.toCharArray()) { map.put(x, map.getOrDefault(x, 0)+1); } for(char x: b.toCharArray()) { // 해당하는 키가 없거나, // -1을 하기도 전에 이미 0일 때 (갯수가 다르다는 뜻!) if(!map.containsKey(x) || map.get(x)==0) return "NO"; map.put(x,map.get(x)-1); } return answer; } public sta.. 2022. 9. 13.
20. 학급회장 (HashMap) # 기억할 부분 1. map.put ( x, map.getOrDefault(x, 0) + 1); => map.getOrDefault(x,0) => 만약 hashmap에 x 키가 존재하지 않는 경우, 일단 0 값을 반환! 존재할 경우, 해당 키의 값 반환! 2. map.keySet() for(char key: map.keySet()) { System.out.println(key + " " + map.get(key)); } 결과값: A 3 B 2 C 5 => 이런식으로 키 + 값 형식으로 나옴! package Algorithm; import java.util.*; public class Main { public char solution(int n,String s) { char answer = ' '; Has.. 2022. 9. 12.
19. 연속된 자연수의 합 (수학) # 풀이 - 수학 이용 - 연속된 자연수가 2개일 때, 3개일 때 ... 쭉 검사한다. import java.util.*; public class Main { public int solution(int n) { int answer =0; int cnt =1; // 어차피 1 뺴야되니까 1 빼줌 n--; while(n>0) { cnt++; n = n-cnt; if(n%cnt==0) answer++; } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); System.out.print(T.solution(n)); } } 2022. 8. 10.
반응형
LIST