목록후기 (34)
개발자는 기록이 답이다

5. 쇠막대기 예시 입력 1 ()(((()())(())()))(()) 예시 출력 1 17 예시 입력 2 (((()(()()))(())()))(()()) 예시 출력 2 24 문제를 이해하는 것이 중요했다. 개인적으로 이렇게 길고 그림이 나오면 읽는데 집중이 안되는데, 이것도 연습이 필요하겠지 코드상으로는 간단한데, 어떻게 풀지 생각해낼 수 있느냐가 중요하다 스택을 생성하고 여는 괄호를 만나면 무조건 push 해야합니다. 그리고 닫는 괄호를 만나면 1) 레이저의 쌍으로 닫는 괄호 2) 막대기의 끝을 알리는 괄호 2가지중에 어떤거인지 판단해야합니다. 어떻게 판단하냐면, 바로 앞에꺼가 여는 괄호라면 레이저입니다. 그때 막대기를 자르는 겁니다. 그게 아니라면 그냥 막대기입니다. 다시 말해서,닫는 괄호를 만났을때 ..

1. 올바른 괄호 예시 입력 1 (()(()))(() 예시 출력 1 NO 강의 풀이(Time: 167ms Memory: 27MB) 중괄호든 대괄호든 괄호 문제는 십중팔구 Stack으로 풀어야 한다. )(()) // 닫는 괄호가 더 많을때 예외처리 필요 )()( // 닫는 괄호 여는 괄호 개수가 똑같아도 )(는 올바른괄호가 아니기 때문에 예외처리 필요 (()() // 여는 괄호가 더 많을때 예외처리 import java.util.Scanner; import java.util.Stack; public class Main { public String solution(String str) { String answer = "YES"; Stack stack = new Stack(); for (Character x ..

6. 연속된 자연수의 합(수학) 예시 입력 1 15 예시 출력 1 3 강의 풀이 import java.util.Scanner; public class Main { public int solution(int n) { int answer = 0, cnt = 1; n--; while(n>0) { cnt++; n = n-cnt; if(n % cnt == 0) { // 실제 값을 확인해 보기 위한 출력문 // System.out.println(n + " " + cnt); answer ++; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n ..

5. 연속된 자연수의 합 예시 입력 1 15 예시 출력 1 3 내가 푼 풀이(Time: 156ms Memory: 27MB) 강의 풀이에선 배열을 만들어서 자연수들을 담았는데, 그게 더 속도가 조금 빠르다. 계속 정수를 찾는것보다 데이터를 배열로 담는게 찾기가 더 빨라서 그런걸까? import java.util.Scanner; public class Main { public int solution(int n) { int answer = 0, lt = 1, sum = lt; for (int rt = 2; rt = n) { sum -= lt; lt++; if (sum == n) answer++; } } ..