728x90
반응형
SMALL

분류 전체보기 67

싱글톤 패턴(Singleton Pattern)이란

예전 기술 면접을 볼 때 싱글톤 패턴 관련해서 질문을 받았었습니다 ㅎㅎ 공부 중 이전 면접 기억이 나서 한번 정리해보겠습니다! 싱글톤 패턴이란 어떤 클래스가 최초 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴 즉, 싱글톤 패턴은 '하나'의 인스턴스만 생성하여 사용하는 디자인 패턴입니다. 쉽게 말하자면 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법입니다! 왜 사용하나요 객체는 생성할 때마다 메모리 영역을 새로 할당 받아야 합니다. 동일한 객체를 사용해야하는 경우 선언된 객체를 호출할 때마다 객체가 새로 생성이 되는데 만약 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성되고 소멸되며 이..

개발지식 2024.02.23

프로그래머스) 주사위 게임 3 Lv0

문제 설명 1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다. 네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다. 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다. 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다. 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다. 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습..

코딩 테스트 2024.02.17

프로그래머스) 바탕화면 정리 Lv1

문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을..

코딩 테스트 2024.02.16

프로그래머스) 문자열 나누기 Lv1

문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. ..

코딩 테스트 2024.02.16

[SPRING] DI(Dependency Injection) 의존관계 주입 2탄!

DI 를 공부하던 중 깨달음을 얻고 더 적절한 예시와 설명을 하기위해서 추가로 작성해봅니다 ㅎㅎ DI, 의존관계 주입이란 Dependency Injection은 의존성 주입이라고도 하며, 객체 간의 의존성을 외부에서 주입하여 결합도를 낮추고 유연한 코드를 작성하는 방법입니다. 말 그대로 메서드 안에 파라미터값을 통해 필요한 메서드나 데이터들을 추가하여 사용하는 것으로 이해하면 편합니다! 바로 예시를 들어가보겠습니다 우선 DI를 사용하지 않는 경우입니다 public class UserServiceImpl implements UserService { private UserRepository userRepository = new UserRepositoryImpl(); public void addUser(Use..

개발지식 2024.02.15

프로그래머스) 숫자 짝꿍 Lv1

문제 두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다. 예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니다(X에는 5가 3개, Y에는 5가 2개..

코딩 테스트 2024.02.15

프로그래머스) 옹알이(2) Lv1

조카는 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 조카가 발음할 수 있는 단어의 개수를 return 하시오.... 먼저 연속해서 발음하는 ayaaya|yeye|woowoo|mama 를 모두 replaceAll 로 제외시켰다 그 다음 2중 for 문을 사용하고 그 안에 while 문을 사용하여 문자가 맞을 경우 "" 로 변경하고 answer++ 을 했는데 시간초과가 되어버린다! class Solution { public int solution(String[] babbling) { String tell[] = {"aya", "ye", "woo", "ma"}; int answer = 0..

코딩 테스트 2024.02.14

프로그래머스) 햄버거 만들기 Lv1

햄버거를 순서대로 뽑아내는 문제입니다! 빵 : 1, 야채 : 2, 고기 : 3 위 조건으로 1231 숫자를 최대로 뽑아낼 수 있는 방법을 구하는 코딩테스트 문제! 처음에는 무작위로 주어지는 int 배열을 String 하나의 문자로 만든 뒤 indexOf 를 통해 "1231" 문자가 없을 때까지("1231" 이 포함이면 -1 을 뽑음) while 문을 돌렸다 -> while(조건문) () 안의 조건이 거짓이 될 때까지 반복하는 반복문이다.(기본 문법인데 가끔 헷갈려서 설명추가;;) 테스트케이스 실행시에는 너무 잘되는데, 문제를 제출할 때 몇몇 캐이스가 시간초과가 떠버린다... import java.util.*; class Solution { public int solution(int[] ingredient..

코딩 테스트 2024.02.14

index 가 뭔지, 동작원리에 대해 설명해보세요(실제 기술면접 질문)

이전 기술면접을 진행했던 당시 index 의 동작원리에 대해서 질문을 받았는데 대략적적으로 index가 뭔지는 알고 있었지만 상세하게 답변을 못했던 기억있어 확실하게 알기위해! 문서를 작성해봅시다. index란 무엇인가?! 인덱스(index)는 데이터베이스에서 검색 속도를 향상시키는데 중요한 역할을 하는 자료구조입니다! 데이터베이스에서는 대량의 데이터를 효율적으로 처리해야하는데, 인덱스는 이를 가능하게끔 합니다. 또한, 데이터베이스 인덱스는 특정 열 또는 컬럼에 대한 정렬된 구조로 데이터를 저장하며, 이를 통해 데이터베이스 시스템은 빠른 검색을 가능하게 하고 특히 WHERE 절에서 자주 사용되는 조건에 따라 데이터의 위치를 빠르게 찾아줍니다. INDEX 의 종류에는 이진탐색트리(Binary Search ..

개발지식 2024.02.13

도커(Docker)란! 컨테이너(Container)란! 쿠버네티스(Kubernetes)란! 무엇인가!

도커(Docker)란!컨테이너 기반의 오픈소스 가상화 플랫폼입니다!컨테이너란 개발 환경의 표준화를 가능하게하는, 격리된 공간에서 프로세스가 동작하는 기술을 의미합니다.이 컨테이너를 사용하면 개발 환경의 표준화가 가능하므로, 개발자가 작업한 환경을 그대로 배포할 수 있게 됩니다! 도커는 '내 PC에서는 잘 돌아가는데, 서버에서는 왜 안돌아가지?!' 라는 문제를 해결하기 위해 등장하였으며, 개발환경을 코드로 관리하고, 이를 통해 동일한 환경을 재생성할 수 있습니다. 컨테이너(Container)란!컨테이너는 애플리케이션과 그 실행 환경을 패키징하는 기술로 격리된 공간에서 어플리케이션이 실행되도록 하는 기술입니다. 각 컨테이너는 독립적인 실행 환경을 가지며, 서로의 시스템 리소스나 파일 시스템을 ..

개발지식 2024.02.12
728x90
반응형
LIST