Java 9

[면접준비] JAVA

1. 객체지향프로그래밍이란?(OOP)- 프로그램을 객체단위로 설계하고, 데이터와 기능을 묶어 캡슐화하며, 객체간 상호작용으로 문제를 해결하는 프로그래밍 방식입니다. 2. 객체지향 프로그래밍 4가지 특징- 객체지향의 4가지 특징으로는 캡슐화, 상속, 다형성, 추상화가 있습니다.- 캡슐화는 데이터와 메서드를 하나로 묶고, 접근을 제한시키는 것이고 상속은 기존 클래스의 기능을 재사용, 확장하는 것을 의미합니다.- 다형성은 하나의 메서드, 연산이 다양한 형태로 동작하는 것을 의미하고 추상화는 불필요한 구현을 숨기고 핵심 기능만 노출 시키는 것을 의미합니다. 3. SOLID-SOLID는 객체 지향 설계원칙으로 단일 책임 원칙, 개방-페쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존 역전 원칙을 의미..

면접준비 2025.09.16

[백준 1325번] - JAVA

이 문제를 풀기 위해서는 신뢰 관계를 정확하게 파악해야 합니다.1 2가 신뢰 관계일 때 (1 ➡️ 2) 2가 감염되면 1도 감염이 됩니다. 하지만 1이 감염되면 2는 감염되지 않습니다.즉 신뢰 관계가 양방향이 아닌 단방향이라는 것을 생각하고 문제를 풀어야 합니다.import java.util.*;import java.io.*;//A가 B를 신뢰한다//B를 해킹하면 A도 해킹할 수 있다public class Main{ private static List[] graph; private static int N; private static int M; public static void main(String []args) throws IOException{ Buf..

[백준 15649번] - JAVA

이 문제는 백트래킹을 사용하여 풀었습니다.문제의 난이도 자체는 높지 않지만 백트래킹 개념을 이해하기에 좋은 문제인 것 같습니다. 백트래킹값을 탐색하던 도중 가능성이 없다고 판단되면 다시 돌아가서 탐색하는 기법입니다.여기서 중요한건 다시 돌아간다는 것입니다. 이를 이해하려면 트리구조로 보는 것이 좋겠습니다.만약 위의 문제에서 3, 2가 N,M의 값으로 주어진다면 이런 트리구조가 나올겁니다.1부터 탐색을 시작하면 1,2를 탐색 후 2값만 지워주고 다시 1로 돌아가서 3을 탐색합니다. 이렇게 되면 1에 대한 탐색을 끝난겁니다.같은 방법으로 N이하의 모든 숫자를 탐색을 한다면 문제의 답이 나옵니다.여기서 중요한건 1,2를 탐색 후 1로 다시 돌아갔다는 점입니다. import java.util.*;import j..

[백준 1926번] - JAVA

이 문제는 입력으로 주어진 0,1중 1이 연결된 그룹의 개수와 가장 많은 1이 연결된 그룹의 1의 개수가 몇 개인지 출력하는 문제입니다.0,0부터 n,m까지 확인하며 1이 연결되어 있는 부분을 찾아내면 됩니다.단, 1이 연결된 부분만 찾으면 되기 때문에 탐색중 값이 0이면 굳이 탐색 로직을 수행하지 않아도 됩니다.import java.util.*;import java.io.*;public class Main{ private static int[] dx = {1,-1,0,0}; private static int[] dy = {0,0,1,-1}; private static int[][] board; private static boolean[][] visited; private st..

[프로그래머스 기능개발] - JAVA

import java.util.*;//progresses - 작업 진도//speeds - 작업 속도//뒤에 기능이 먼저 개발된다면, 앞의 기능 배포시에 같이 배포//하루에 하나씩 배포//작업 진도에 작업 속도만큼 추가하는 반복문이 필요//반복문안에는 반복문의 싸이클 종료시 마다 작업 진도를 체크하는 로직이 필요//반복문 탈출 조건은 작업 Queue가 비워졌을때로 하자class Solution { private Queue> workQueue = new LinkedList(); private List finCntList = new ArrayList(); public int[] solution(int[] progresses, int[] speeds) { int[] a..

[백준 1920번] - JAVA

이 문제는 처음 입력한 숫자 배열안에 두번째 입력한 배열의 숫자가 들어있는 판별하는 문제입니다.처음엔 단순히 모든 값을 비교하는 방식으로 풀었더니 시간 초과가 발생하더라구요그래서 이분 탐색으로 문제를 풀었습니다. import java.util.*;import java.io.*;public class Main{ public static void main(String []args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));..

[프로그래머스 JadenCase 문자열 만들기] - JAVA

프로그래머스의 JadenCase 문자열 만들기 문제를 풀어보겠습니다.https://school.programmers.co.kr/learn/courses/30/lessons/12951# 코딩테스트 연습 - JadenCase 문자열 만들기알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려school.programmers.co.kr class Solution { public String solution(String s) { String answer = ""; s = s.toLowerCase(); boolean isFir..

[백준 2217번] - JAVA

이 문제는 주어진 로프로 버틸 수 있는 최대 중량을 구하는 문제입니다.문제의 마지막에 모든 로프를 사용해야할 필요가 없고, 임의로 몇 개의 로프를 골라서 사용해도 된다는 것이 이 문제의 핵심입니다.모든 로프를 사용할 때의 최댓값 : 로프의 개수 x 로프의 중량 중 가장 낮은 중량만약 일부만 사용한다면?가장 낮은 중량 다음으로 낮은 중량과 로프의 개수를 하나씩 줄인 수를 곱하면 됩니다.이를 위해서는 받은 로프를 정렬시켜줘야 합니다.중량 최댓값 = (로프의 개수 - i) x (i번째 로프의 중량)import java.util.*;import java.io.*;public class Main{ public static List ropeList = new ArrayList(); public ..