[TIP💡] 인텔리제이(Intellij)로 코딩테스트 환경 구성하기 (입출력을 txt로?)
·
Algorithm
백준이나 SWEA에서 문제를 풀다보면테스트 케이스를 확인하기 위해 계속 복사+붙혀넣기를 하기 귀찮을 때가 있다. SWEA 같은 경우에는 입력 테스트케이스를 복붙하여 입력할 때 가끔 오류가 날 때도 있다.. 우리는 평소 아래와 같이 입출력을 사용한다! 디버깅을 하다보면 디버깅 할 때마다 이 테스트 케이스를 계속 복사 붙혀넣기 해야 하기 때문에상 당 히번거롭다... 하지만..! 디버깅때 매번 테스트케이스 입력 없이 한번 입력해두고 디버깅을 할 수 있는 방법이 있다!!!!!   1. 아래와 같이 코딩테스트를 연습할 프로젝트를 생성 하고 클래스명 왼쪽에 있는 초록색 실행버튼을 눌러준다 2. 텍스트 파일 input.txt와 output.txt 파일을 만들어 준다! 3. 우측 상단에 Main (클래스이름) -> E..
[Servlet] 서블릿이란?
·
BackEnd
서블릿 (Servlet) 이란?클라이언트의 요청(request)에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트이다.클라이언트에서 요청이 들어오게 되면 서버에서 요청을 처리하고 그 결과를 반환해준다. MVC 패턴에서 컨트롤러로 이용된다.동작 과정1. 클라이언트의 요청2. HttpServletRequest, HttpSerlvetResponse 객체를 생성3. web.xml에서 어느 서블릿에 대한 요청인지 확인4. 해당 서블릿에서 get요청인지, post요청인지에 따라 doGet, doPost 메서드 실행하여 response 객체에 응답 전송5. HttpServletRequest, HttpSerlvetResponse 객체 소멸  생명 주기1. init()- 서블릿 생성시 초기화 작업2. service() ..
[백준] 13418 학교 탐방하기 - JAVA
·
Algorithm
백준 13418 학교 탐방하기 GoldIII - JAVA 📌https://www.acmicpc.net/problem/13418문제 설명문제 풀이접근 💡0번에서 시작하는 최소신장트리를 구하는 문제이다.0은 오르막길, 1은 내리막길이고 오르막길인 간선에서만 비용이 1 증가한다. 문제에서는 최악의 비용이 발생하는 경우와 최선의 비용이 발생하는 경우의 비용 차를 요구한다. 최소신장트리 알고리즘인 프림 알고리즘과 크루스칼 알고리즘을 사용하여 풀 수 있다.두 알고리즘 모두 그리디 알고리즘에 기반한 알고리즘이기 때문에, 0을 우선순위로 두는 정렬, 1을 우선순위로 두는 정렬을 하여 최대비용과 최소 비용을 구해보자  코드 💡1. 크루스칼 풀이import java.io.BufferedReader;import jav..
[SWEA] 2477 차량 정비소 - JAVA
·
Algorithm
SWEA 2477 차량 정비소 - JAVA 📌https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV6c6bgaIuoDFAXy 풀이 기간으로는 이틀 좀 안걸렸어요.. 코응애한테는 너무 버거운 문제였다.요새 모의 SW 역량테스트를 조금씩 건드려 보고 있는데,마치 헬스로 따지면 벤치프레스 뽑지도 못하는 100kg을 뽑으려고 안간힘 쓰는데 절대 뽑을 수 없는 그런 느낌? 다시 기본기부터 천천히..점진적 과부하 식으로 마음 급하게 먹지 않고 기본기부터 천천히 다져야 겠다는 생각이 들었다!문제 풀이접근 💡지문에서 요구하는 것은 고객이 어느 창구에 머물렀냐는 것이다.고객의 정보를 가지는 클래스를 하나 선언하자.static cl..
[JAVA] Comparable과 Comparator를 이용한 객체 비교와 이해 및 차이점
·
JAVA
Comprable, ComparatorComparble과 Comparator는 JAVA에서 다양한 곳에 활용 되고 있다. 대표적으로 Heap(Priority Queue)자료구조가 있다. 이름도 비슷해서 헷갈릴 만한 두 인터페이스의 차이를 알아보자! Comparble과 Comparator는 모두 인터페이스이므로 인터페이스 내 선언된 메서드를 반드시 구현해야 한다. 우선 두 인터페이스의 기본적인 구조를 알아보자 1. Comparable 인터페이스는 int 타입을 반환하는 compareTo(T o) 메서드를 가지고 있다.2. Comparator 인터페이스는 선언된 메서드가 많다    우리가 객체 비교를 위해 구현해야 할 메서드는 compare(T o1, T o2) 이다. 즉, Comparable 인터페이스를 ..
[알고리즘] 비트 마스킹으로 '부분 집합' 구해보기 - JAVA
·
Algorithm
부분 집합이란?A라는 집합이 있고 B라는 집합이 있다고 가정해보자.A라는 집합이 B라는 집합에 속하면 A는 B의 부분 집합이 된다.예를 들어, 집합 {1, 2, 3}의 부분 집합은 {}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} 으로 자기 자신까지 포함해서 총 8개가 된다. 즉 부분 집합의 개수는 원래 집합의 원소의 개수를 N이라고 할 때, 2^N 개라고 할 수 있다.먼저 비트 연산자를 알아보자. 위에서 설명한 부분 집합의 개수를 구하는 것을 비트 연산자로1  이렇게 나타 낼 수 있다.1을 2진수로 나타냈을 때 0001이고, N이 3일 때 3만큼 왼쪽으로 비트를 이동시키면 1000으로 8이 된다.public class Main { public static voi..
[자료구조] 해시(Hash), 그리고 JAVA
·
자료구조
해시 (Hash)"입력 값(Input)을 고정된 길이의 데이터로 변환"해시 자료구조의 특징1. key에 value를 매핑하는 구조이다.2. 해시 함수(해시 알고리즘) 을 통해 key의 데이터를 Hash Table에 저장한다.3. key를 통해 저장된 데이터를 찾기 때문에 탐색 속도가 매우 빠르다. 위 특징들을 가진 덕에 '해시 테이블' 구조를 가진다. Hasing의 과정"해시 함수에서 해시를 출력하고 해시 테이블에 저장하는 과정"   장점과 단점을 알아보자. 데이터 저장과 읽기가 매우 빠르다. 자료구조 특성 상 key에 매핑된 value 확인이 매우 쉬워진다.그러나 저장 공간을 많이 차지하고, 여러 키에 해당하는 주소가 동일한 경우 Collision이 발생한다.이 Collision을 해결하기 위한 별도의..
[백준] 17471 게리 맨더링 - JAVA
·
Algorithm
백준 17471 게리 맨더링 GoldIII - JAVA 📌https://www.acmicpc.net/problem/17471문제 설명문제 풀이접근 💡- 1 부터 N 까지 숫자를 두 구역으로 나눌 수 있는 모든 경우의 수를 찾는다! - 구역을 나누고 한 구역 마다 인접해 있는지 확인한다! - 인접해 있다면 두 구역의 인구수 차를 구해 최솟값으로 갱신해준다! 첫 번째, 숫자(지역)를 두 구역으로 나눠보자.for (int i = 1; i (), visited);}//두 구역으로 나누는 메서드public static void combine(int start, int end, ArrayList groupA, boolean[] visited) { if (groupA.size() == end) { Arra..
[백준] 14502 연구소 - JAVA
·
Algorithm
백준 14502 연구소 GoldIV - JAVA 📌https://www.acmicpc.net/problem/14502문제 설명N X M 으로 주어진 배열에서 벽을 3개 세웠을 때, 안전 영역 크기의 최댓값을 구하는 문제문제 풀이접근 💡- 벽을 3개 세워야 한다. [2차원 배열을 탐색하면서 벽을 3개 세울 수 있는 모든 경우의 수 고려하기] 백트래킹 탐색- 벽이 3개 세워졌을 때 바이러스를 퍼뜨린다. [바이러스를 찾아 (상,하,좌,우)가 0일 때 퍼뜨려야 한다] BFS- 바이러스를 퍼뜨린 후 안전 영역의 개수를 카운트 한다. 우리는 안전 영역의 최댓값을 구해야 한다.즉 벽이 3개 세워진 경우마다 바이러스가 퍼진 후 안전 영역의 개수를 최댓값으로 갱신해주어야 한다.벽이 3개 세워진 경우의 배열을 bfs(..
[SSAFY] SSAFY 12기 합격 후기 (전공자)
·
SSAFY
졸업하고 막연하게 개발자가 되고 싶다는 생각만 가진채.. 허송세월 보내던 중에 싸피 모집공고를 보고 지원했습니다. 대학교 막학기에 찍먹한 알고리즘 다시 상기시키면서 공부해서 시험 봤습니다..!저처럼 졸업 후 개발자가 되고 싶은데 실력이나 프로젝트 경험이 부족하면 지원해 볼만하다고 생각합니다.운좋게 1지망 합격했네요 ㅠㅠ   목차모집 일정에세이SW적성진단인터뷰1. 모집 일정2024년 4월 22일(월) ~ 5월 7일(화) 17시 : 지원서 접수2024년 5월 8일(수) ~ 5월 18일(토) : 에세이 제출2024년 5월 11(토) : SW 적성진단 *비전공2024년 5월 19일(일) : SW 적성진단 *전공2024년 5월 28일(화) 15시 : 인터뷰 대상자 발표2024년 6월 5일(수) ~ 6월 12일(수..