
[BOJ] 14500 테트로미노 - Java
2022. 6. 11. 13:58
Algorithm/백준
🤔 문제 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 😀 풀이 위 문제는 적절한 구현과 완전 탐색을 하여 풀이하였습니다. 주어진 종이 정보에 도형 5가지를 각각 놓아보아야 하는데 이 때 각 도형을 회전, 대칭시켜서 놓아보는 작업 역시 해봐야 합니다. 저의 풀이에서는 편의를 위해 도형을 회전하는 과정은 종이 정보를 회전하는 방식을 사용해 풀이했습니다. 풀이 과정을 간략하게 요약하면 아래와 같습니다. 종이의 모든 점에 도형을 하나씩 놓아본다. 점수를 계산한다. 1번 과정에서 도형을 회전하고 대칭해보는 과정을 포..

[LeetCode] 33. Search in Rotated Sorted Array - Python
2022. 5. 5. 17:53
Algorithm/LeetCode
🤔 문제 Search in Rotated Sorted Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 😀 풀이 해당 문제는 이진 탐색을 조금 더 응용하여 풀이할 수 있는 문제입니다. 특정 인덱스를 기준으로 rotate 되어 기존 방식으로 이진 탐색을 하는 것이 불가능하여 한 단계 더 과정을 거쳐야 문제 조건에 맞게 풀이할 수 있습니다. 가장 처음 생각한 방법은 다음과 같습니다. rotate가 몇 번 되었는지 확인한다. 즉, 배열에서 가장 작은 값의 ..

[BOJ] 9663 N-Queen - Python
2022. 5. 4. 05:01
Algorithm/백준
🤔 문제 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 😀 풀이 위 문제는 백트래킹으로 유명한 N-Queen 문제입니다. 처음에는 해당 문제를 2차원 배열을 사용하여 퀸들의 위치 정보를 담아 풀이를 하려했는데 구글링 도중 1차원 배열을 사용해 푸는 좋은 방법이 있어 해당 부분을 차용해보았습니다. 자세한 내용은 아래와 같습니다. rows라는 1차원 배열을 가지고 퀸들의 정보를 담습니다. 만약 rows[i] = j 라는 값을 가진다면 이는 i 행의 j 열에 퀸이 놓여져있다라는 의미가 됩니다. 또한 문제 풀이 과정에서 두 가지 ..

[LeetCode] 42. Trapping Rain Water - Python
2022. 4. 27. 15:13
Algorithm/LeetCode
🤔 문제 Trapping Rain Water - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 😀 풀이 해당 문제는 벽 높이 정보를 가지고 있는 배열을 이용하여 비가 온 뒤 벽 사이에 고인 빗물 양을 계산하는 문제입니다. 각 위치마다 고일 빗물의 양을 계산하는 과정을 통해 문제 풀이를 진행했는데 이 때 고려해야 할 것은 다음과 같습니다. # 현재 위치 기준으로.. 좌측에 있는 벽들 중 최대 높이 우측에 있는 벽들 중 최대 높이 위 두 가지를 안다면 두 가지 중 ..

[LeetCode] 49. Group Anagrams - Python
2022. 4. 26. 01:10
Algorithm/LeetCode
🤔 문제 Group Anagrams - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 😀 풀이 위 문제는 주어진 문자열 배열들을 anagram 끼리 모아보는 문제입니다. 문제 풀이에서 핵심이 된 아이디어는 "anagram이라면 문자열을 정렬했을 경우 같은 값이 나온다" 입니다. 따라서 풀이를 진행한 흐름은 아래와 같습니다. 문자열 배열을 하나씩 살펴보는 과정에서 각 문자열을 정렬해본다. 정렬한 뒤 dict에 문자열을 넣는다. 이 때 key는 정렬된 문자열, va..

[Spring] @SpringBootApplication 에 대하여.
2022. 4. 12. 01:46
Spring
0.🚶들어가며 Spring boot로 프로젝트를 실행하면 알아서 만들어지는 유일한 자바 코드로 아래와 같은 코드를 찾아볼 수 있습니다. import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 여기에 붙어있는 어노테이션인 @SpringBootApplication이 어떤 역할을 하고 있는지 궁금하여 ..

[프로그래머스] 조이스틱 - Python
2022. 4. 4. 04:20
Algorithm/프로그래머스
🤔 문제 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 😀 풀이 해당 문제는 프로그래머스의 그리디 유형으로 올라온 문제인데.. 테스트 케이스 추가 전에는 정답 처리가 되었다가 다시 채점해보니 틀렸다고 나와 재풀이한 문제입니다. 그리디로 풀었던 방법은 현재 위치를 기준으로 'A'가 아닌 곳 중 가장 짧은 곳으로 가서 변경하고 이를 반복하는 작업을 했습니다. 그런데 이런식으로 풀면 반례가 생깁니다...! 대표적으로 "BBBBAAAABA" 가 있습니다. 그리디 방식을 사용할 경우 아래와 같이 ..

[Java] ClassName.class가 뭐지..?
2022. 3. 23. 00:55
Java & Kotlin
0.🚶들어가며 스프링 공부를 시작하며 아래와 같은 코드를 마주쳤습니다. 스프링 컨테이너에 관한 코드인데 가장 오른쪽을 살펴보면 AppConfig.class 라는 인자를 넘겨주고 있는 모습을 볼 수 있었습니다. 이때 AppConfig.class가 뭐지..? 라는 생각이 들었습니다. 그리고 다음과 같은 사고과정을.. 거쳐갔습니다. AppConfig.class 라고 쓰는 걸 보니 AppConfig의 static 변수인가? AppConfig는 내가 만든 클래스인데 그럼 부모 클래스인 Object 클래스에 저런 static 변수가 있었던가? Object 클래스에 저런 static 변수가 없는데..? 1.Class Literal 관련된 내용을 검색하다보니 위와 같은 키워드를 얻을 수 있었고, Oracle docs에..

[Spring] @Autowired 해야하는데 조회 빈이 여러 개라면..
2022. 3. 22. 02:05
Spring
0.❓문제상황❓ 스프링 컨테이너에 빈 등록을 아래와 같이 한 경우를 생각해보겠습니다. 위 코드를 설명을 간단히 설명하면 아래와 같이 두 구성으로 이루어져 있는 상황입니다. 할인 정책 할인 정책에 의존성이 있는 오더 서비스 또한 할인 정책은 두 가지로 Fix, Rate 방식이 있는 상태이죠. 세 클래스 모두 @Component 어노테이션을 붙였기 때문에 스프링 컨테이너에 빈으로 등록됩니다. 이때 문제가 생깁니다. OrderServiceImpl 클래스의 생성자를 보시면 두 번째 인자로 DiscountPolicy를 받는 것을 알 수 있고 Autowired로 의존성 주입이 될 것을 예상할 수 있습니다. 그런데.. DiscountPolicy로 조회한 빈이 위 같은 상황에서는 Fix와 Rate 방식 두 가지로 조회..

[운영체제(OS)] 디스크 구조와 디스크 스케줄링
2022. 3. 11. 23:46
CS/운영체제
0.🚶들어가며 이번 글에서는 저장장치의 대표적인 예인 디스크에 대해 알아볼 예정입니다. 디스크의 구조는 어떠한지, 디스크 스케줄링은 무엇인지에 대한 내용을 다뤄보도록 하겠습니다. 1.⚪디스크의 구조 위 그림은 디스크의 구조를 보여줍니다. 몇 가지에 대해 알아보도록 하겠습니다. 1) 플래터 플래터는 표면의 자성체와 자기를 이용해 0과 1의 데이터를 저장합니다. 2) 섹터와 블록 섹터는 하드 디스크의 가장 작은 저장 단위입니다. 하나의 섹터에는 한 덩어리의 데이터가 저장되고 이들이 모여 플래터가 됩니다. 블록은 논리적인 개념에서의 가장 작은 단위입니다. 하드디스크와 컴퓨터 사이에 데이터를 전송하는 단위이고 메모리에서는 블록마다 주소가 배정됩니다. 정리하면 하드 디스크 입장에서는 섹터가 가장 작은 저장 단위이..