Algorithm/문제풀이 18

[leetcode] 3079. Find the Sum of Encrypted Integers - Rust

leetcode 문제 중 Rust의 다양한 타입변환을 참고하기 좋은 문제가 있어 기록해둔다.   자세한 내용은 주석에 상세하게 적어두었으니 참고바란다.  알고리즘 문제 풀이 중 가장 기본적인 내용은 타입간 변환이다. i32 -> char -> char 's  -> string -> i32 -> 혹은 u8 u32 usize 등으로 변환이 자유자재로 가능해야한다.  이게 안되면 중간에 막히는 곳이 너무 많다.   /** 1530 ~ 1545 i32 char's string간 변환이 핵심인 듯 하네요 */impl Solution { pub fn sum_of_encrypted_int(nums: Vec) -> i32 { let mut output = 0; f..

[leetcode] 2451. Odd String Difference - Rust

간만에 카페에서 쉬면서 평화로운 시간을 보낸다. 역시나 쉴때는 리트코드 푸는게 제일 재밌다.  심심해서 Rust로 풀어봤다.   재밌는 문제다. 문제 자체는 쉬운 편인데 Rust로 풀자니 Rust자체의 문법에서 살짝 걸려넘어지는 부분이 있었다. 정리해둘만한 부분이 있는데 같이 살펴보자.  자 우선 for word in &words에서 &로 borrow해서 사용한다. 이렇게 사용하는 이유는 borrow해서 사용하지 않으면 밑에서 words를 참조하려고 할때 위에서 소유권이 이미 이전되었기 때문에 컴파일 에러가 나기 때문에 borrow해서 사용해야 한다. 또 재밌는 부분은 String타입은 개별 word를 접근하려고 할때 String타입 그 자체에서 [] indexing으로 접근할 수 없기 때문에 word...

[BOJ] 백준 16939 - 2×2×2 큐브 - Java solution

백준 16939 문제이다. Java로 풀이했다. 참고로 이 문제는 굉장히 좋은 문제이다. 문제 자체의 퀄리티가 굉장히 좋다. 문제가 깔끔하고 실력 향상에도 많은 도움이 된다. 예전에 한번 풀려고 시도했지만 당시에 답안에 거의 근접했는데 사소한 로직에서 실수를 해서 풀지 못했다. 대략적인 풀이방법은 알고있었지만 오늘에서야 해당 로직을 수정하게 되었다. 구현 문제이고 정말 흥미로운 문제이다. 개인적으로 이런 문제를 좋아한다. 어째서인지 복잡한 구현 문제가 가장 재미있다. 그리고 참고로 이 문제는 도전 정신을 자극했다. 풀릴것같으면서도 풀리지 않아서 오히려 그렇게 느낀 것 같다. 28일전에 풀려고 했다가 다시 2주전에 시도했다가 오늘에서야 완벽하게 풀었다. 아래에서 솔루션을 설명하도록 하겠다. 코드가 꽤 길기..

[BOJ] 백준 2529 부등호 - Java 풀이

최근에 백준을 풀던 중 꽤 흥미로운 문제를 발견했다. 시간이 오래걸리기도 했는데 과정에서 꽤 재미를 느꼈다. 또한 배울점이 많은 코드라는 생각이 들어서 첨부했다. 조금 어렵다는 생각이 들기도 했는데 문제 자체가 굉장히 흥미로워서 그냥 붙잡고 불었다. 원래 좀 어려운 문제를 만나면 약간의 스트레스가 생기기 마련인데 이 문제는 그냥 재밌는 문제다. 다른 분들도 이 문제는 꼭 답지 보지 말고 풀어봤으면 한다. 백트래킹 문제인데 부루트포스도 같이 사용해서 풀 수 있는 문제이다. 문제는 아래와 같다. 문제 링크: https://www.acmicpc.net/problem/2529 자 간단하게 dfs 순회하면서 모든 가능한 경우의 대해서 돌아보면 된다. 물론 백트래킹 특성에 따라서 특정 조건에 따라서 가지치기하는 조..

[LeetCode] LeetCode 1576. Replace All ?'s to Avoid Consecutive Repeating Characters - python3

간만에 재밌는 문제를 만났다. 1576. Replace All ?'s to Avoid Consecutive Repeating Characters 문제인데 문제 자체도 재밌고 풀이 방식을 보던 중 꽤나 기발한 접근법을 보게 되어서 인상깊어서 기록해둔다. 우선 문제 링크는 아래와 같다. https://leetcode.com/problems/replace-all-s-to-avoid-consecutive-repeating-characters/ Replace All ?'s to Avoid Consecutive Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expan..

[LeetCode] LeetCode 1572 - matrix-diagonal-sum - Python3

최근 심심해서 리트코드 문제를 몇개 풀었는데 그 중 재밌는 문제가 몇개 있어서 정리해본다. 1572번 문제이다. EASY인데 첫번째 솔루션에 비해서 코드를 꽤나 효율적으로 개선해서 정리해볼 필요가 있다고 생각해서 적어둔다. 일단 아래는 첫번째 제출한 솔루션이다. 꽤나 비효율적이라는걸 알 수 있다. 일단 for loop 이 두개 있다는것부터 비효율적이다. ''' Runtime: 207 ms, faster than 24.29% of Python3 online submissions for Matrix Diagonal Sum. Memory Usage: 14.1 MB, less than 57.39% of Python3 online submissions for Matrix Diagonal Sum. ''' class..

[LeetCode] LeetCoe 1337. The K Weakest Rows in a Matrix - python3

재밌는 문제를 찾았다. 그리고 최근에 느낀거지만 Leetcode 에서 submit 을 하면 성능과 메모리가 어느정도 되는지 나오는데 그걸 줄여보려고 코드를 바꾸려고 했던 적이 많다. 근데 확실해진건 이걸 기준으로 성능, 메모리 최적화를 하긴 어렵다는 것이다. 그 이유는 그 결과가 항상 다르기 때문이다. 즉 그냥 근사치 정도가 아니다. 90퍼센트 효율이 뜨던 코드가 갑자기 10퍼센트 효율이 뜨는 경우도 있다. 그래서 그냥 이런 성능이랑 메모리 효율성을 따지기 보다 그냥 코드만 보기좋게 다듬는 연습을 하는게 더 낫다는 생각이 들었다. 그런데 마침 오늘 꽤 괜찮은 문제를 발견했고 최대한 코드를 줄여보려고 노력을 했는데 list comprehension의 한계에서 막혔다. 즉 list comprehension ..

[LeetCode] LeetCode 1037. Valid Boomerang 솔루션 - python

꽤 쉬운문제라고 생각하고 풀었는데 생각치 못한 부분에서 막혀서 답지를 보고 푼 문제이다. 참고로 블로그에 기록해두는 이유는 답지를 보고 풀었는데 거기서 꽤 많은 점을 배울 수 있었기 때문이다. 아래는 문제 링크이다. 꽤 간단한 문제이다. https://leetcode.com/problems/valid-boomerang/ 자 그렇다면 내가 처음 접근한 오답을 먼저 보자. (이 코드 안봐도 된다. 아예 틀리기도 했고 너무 부실하다. ) class Solution: def isBoomerang(self, points: List[List[int]]) -> bool: points = sorted(points) last_point = points[-1][0] for i in range(1, 3): if points..

반응형