짝을 맞춰 제거하는 문제는 보통 stack을 활용하는 문제들이 많은것 같아서 바로 stack을 활용해서 풀었다. 모든 문자를 처리하는 과정에서 스택에 넣으려는 글자와 스택의 맨 위쪽 글자가 같으면 pop을 해주는 식으로 정리했고 스택이 남아있으면 0 아니면 1을 출력하는 조건문을 달고 풀 수 있었다! import java.util.*; class Solution { public int solution(String s) { Stack stack = new Stack(); for(int i = 0; i < s.length(); i++){ if(!stack.isEmpty() && stack.peek() == s.charAt(i)){ stack.pop(); } else { stack.push(s.charAt(i..
유명한 피보나치문제다 재귀문제로 풀면 시간초과가 나서 dp로 풀었다 class Solution { public static int solution(int n) { if(n == 1 || n == 2){ return 1; } int[] fibo = new int[n+1]; fibo[1] = 1; fibo[2] = 1; for(int i = 3; i
toBinaryString을 사용하면 int값을 이진수로 쉽게 변환할 수 있어 어렯지 않게 풀 수 있다. 하지만 bitCount라는 메소드를 쓰면 더 간결하게 표현할 수 있었다.. 내가푼것 class Solution { public int solution(int n) { int answer = 0; String binaryN = Integer.toBinaryString(n); int count = 0; for(int i = 0; i < binaryN.length(); i++) { if(binaryN.charAt(i) == '1'){ count++; } } while(true){ n++; int count2 = 0; String check = Integer.toBinaryString(n); for(int ..
이번 문제는 그냥 이중 for 문으로 풀면 효율성에서 에러가 나고 포인터 방식을 사용해서 풀어야지 되는 문제이다. start 값과 end 값의 처리를 잘 하면 풀 수 있는 문제였다! class Solution { public static int solution(int n) { int answer = 0; int start = 1; int end = 1; int sum = 1; while (start
package main import ( "fmt" "strconv" ) func main() { l := 5 r := 555 fmt.Print(solution(l, r)) } func check(num int) bool { str := strconv.Itoa(num) for _, r := range str { if r != '5' && r != '0' { return false } } return true } func solution(l int, r int) []int { var result []int for i := l / 5 * 5; i
package main import ( "fmt" ) func main() { arr := []int{0, 1, 2, 4, 3} queries := [][]int{{0, 4, 2}, {0, 3, 2}, {0, 2, 2}} fmt.Print(solution(arr, queries)) } func solution(arr []int, queries [][]int) []int { var result = []int{} for _, query := range queries { k := query[2] min := 1000001 for _, n := range arr[query[0] : query[1]+1] { if n > k && n < min { min = n } } if min == 1000001 { resul..
package main import ( "fmt" ) func main() { numLog := []int{0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1} fmt.Print(solution(numLog)) } func solution(numLog []int) string { result := "" for i := 0; i < len(numLog)-1; i++ { c := numLog[i+1] - numLog[i] switch c { case 1: result += "w" case -1: result += "s" case 10: result += "d" case -10: result += "a" } } return result }
package main import ( "fmt" ) func main() { n := 0 control := "wsdawsdassw" fmt.Print(solution(n, control)) } func solution(n int, control string) int { sum := n for _, v := range control { switch string(v) { case "w": sum += 1 case "s": sum -= 1 case "d": sum += 10 case "a": sum -= 10 } } return sum }