전체 글

Etc

[회고] 늦은 2023 회고 & 2024 목표

이미 2024년의 2월이 다 끝나가는 마당이지만, 그래도 아직 10개월의 시간이 남았고 내가 구체적으로 어떻게 성장할 것인지, 무얼 하고 싶은지 기록해 두어 이를 지켜나가려고 한다. 1. 2023 회고 작년 목표는 딱 하나, 취업이었다. 2022년까지 학생회, 동아리 등 여러 활동을 마무리하고 작년은 본격적으로 구직 활동이라는 것을 시작한 해였다. 운 좋게도 학부 졸업 전에 원하는 회사에 취업을 할 수 있었고 올해부터 본격적으로 초보 개발자로서 맡은 바 업무를 수행하게 될 것이다. 하반기부터 시작한 취준이라 제대로 완벽히 준비된 것 같지도 않고, 세부적으로 본다면 작년 한 해를 알차게 보냈는지는 잘 모르겠다. 하지만 연말에 SSAFY 11기도 합격했고, 다우기술에도 최종 합격해서 한 해를 잘 갈무리한 것..

Java/Java

[Java] 올바른 예외 처리(Exception Handling)

어플리케이션을 실행하다보면 피치 못할 오류가 발생할 수 있는데, 예상되는 오류를 코드로 미리 처리함으로써 어플리케이션의 실행 흐름을 원하는대로 유도할 수 있다. Java에서는 어플리케이션 실행 시 발생할 수 있는 오류들을 클래스로 정의하였다. 0. Error와 Exception 발생할 수 있는 오류는 Error와 Exception, 두 가지 분류로 나뉜다. Error(에러) 에러는 어플리케이션을 컴파일하거나 실행 도중에 발생할 수 있는 치명적인 오류로, 프로세스에 심각한 문제를 야기시켜 프로세스를 강제로 종료시킬 수 있는 오류이다. Java에서는 java.lang.Error 클래스의 하위 클래스에서 에러에 관한 내용을 다루고 있다. 대표적으로 StackOverflowError나 OutOfMemoryErr..

Algorithm

[Algorithm] 투 포인터와 슬라이딩 윈도우

투 포인터 (Two Pointers Algorithm) 투 포인터 알고리즘은 배열/리스트를 탐색하는 알고리즘 중 하나로, 배열에 두 개의 포인터를 두고 위치를 기록하며 계산을 처리합니다. 간단한 문제로 예시를 들어보겠습니다. https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 문제를 보면 배열의 연속된 원소의 합이 M이 되는 경우의 수를 구하라고 합니다. 이 문제는 대놓고 투 포인터를 사용하라고 나와있는 문..

Problem Set/구현

[BOJ] 1986. 체스

https://www.acmicpc.net/problem/1986 1986번: 체스 첫째 줄에는 체스 판의 크기 n과 m이 주어진다. (1 ≤ n, m ≤ 1000) 그리고 둘째 줄에는 Queen의 개수와 그 개수만큼의 Queen의 위치가 입력된다. 그리고 마찬가지로 셋째 줄에는 Knight의 개수와 위치, www.acmicpc.net 풀이 그냥 구현하면 되는데, 범위에 유의하면서 구현해야 한다. 코드 import java.util.*; import java.io.*; public class boj_1986_체스 { static int n, m, ans = 0; static int[][] Q, K, P; static char[][] chess; static boolean isRanged(int r, in..

Problem Set/Greedy

[BOJ] 23889. 돌 굴러가유

https://www.acmicpc.net/problem/23889 23889번: 돌 굴러가유 $M$번째 줄에 걸쳐 가장 많은 모래성을 지키기 위해 벽을 설치해야 할 마을의 위치를 오름차순으로 출력한다. 가장 많은 모래성을 지킬 수 있는 경우가 두 가지 이상 존재할 경우, 사전순으로 가 www.acmicpc.net 풀이 매우 어렵게 푼 문제. 접근 방식도 생각해내기 어려웠는데 그걸 구현하는 것도 쉽지 않았다. 파이썬으로 하면 금방 끝나던데 자바로 하니까 쉽지가 않구만,, 돌이 굴러가기 시작하는 시작 위치에 벽을 둬야 하는건 당연하고, 그 중에서도 어디에 둬야 하는가를 고르는게 중요했다. 문제의 예시를 예로 들면 돌이 [1, 4, 5]번에 떨어지고 1~3 / 4 / 5~7까지로 나누어서 파괴되는 모래성을..

Problem Set/완전탐색

[BOJ] 1469. 숌 사이 수열

https://www.acmicpc.net/problem/1469 1469번: 숌 사이 수열 첫째 줄에 X의 크기 N이 주어진다. 둘째 줄에 X에 들어가는 수가 빈칸을 사이에 두고 주어진다. X의 크기는 8보다 작거나 같은 자연수이다. X의 원소는 0보다 크거나 같고 16보다 작거나 같은 정수 www.acmicpc.net 풀이 풀다가 틀려서 다른 코드를 참고했다.. 기존에 접근했던 방법은 만들 수 있는 모든 수열을 만들어 체크하는 것이었는데, 최대 길이가 20인 수열을 순열로 만드는건 20! 이기 때문에 시간초과가 나버렸다. 참고한 방법은 2*N 길이를 완성해가는 과정에서 조건을 만족하지 못하는 경우를 제거해나가는 방법이었다. 입력 수열 X를 오름차순으로 정렬하고, 현재 위치에서 숫자 i를 사용하지 않았..

Problem Set/구현

[Programmers] 카펫

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 분류는 완전탐색인데 푸는건 약수를 이용해서 풀었다. 완탐으로도 풀 수 있을 것 같은데 내가 푼 방식이 더 효율성이 높을 것 같다. 결국 카펫을 이루는 것은 노란색으로 이루어진 판을 갈색으로 한 칸씩 감싸는 것이기 때문에, 노란색이 어떻게 이루어져 있는지 결정하고 가로/세로로 +2씩만 하면 카펫이 구성되는 것을 이용한다. 코드 class Solution { public int[] solutio..

Problem Set/완전탐색

[BOJ] 2404. 단위 분수로 분할

https://www.acmicpc.net/problem/2404 2404번: 단위 분수로 분할 첫째 줄에 양의 정수 p, q, a, n이 입력된다. (1 ≤ p, q ≤ 800, 1 ≤ a ≤ 12000, 1 ≤ n ≤ 7) www.acmicpc.net 풀이 좀 많이 어려웠다. 시간 제한이나 범위로 봐서는 완탐으로 돌리는게 맞는데 어딜 어떻게 잡고 돌려야 할지 감이 오지 않았다. 이것만 떠올리면 문제에 접근하는데 감이 확 온다. a/b=c/d ac=bd 즉 a/b를 주어진 p/q라고 생각하고, c/d를 만들어진 단위 분수라고 생각했을 때 p*d==q*c를 만족하는 경우를 세면 되는 것이다. 코드 package backtracking; import java.util.*; import java.io.*; ..

주니어 개발자의 아카이브
KangCoder`s Dev