1. 빈(Bean) Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부른다. 우리가 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다. ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다. 즉 Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다. 주요 속성 class(필수): 정규화된 자바 클래스 이름 id: bean의 고유 식별자 scope: 객체의 범위 (sigleton, prototype) constructor-arg: 생성 시 생성자에 전달할 인수 property: 생성 시 bean setter에 전달할 인수 ini..
최소공약수를 구하는 방법과 최소공배수를 구하는 방법 모두 자주 등장하는 문제이다. 유클리드 호제법을 이용하여 구하는 최소공약수, 그리고 최소공배수는 두 수의 곱/최소공약수이다. 그런데 이 문제에서는 여러개의 최소공배수를 구해야한다. 어떻게 구해야할 지 고민하다가 다른 풀이를 참고했다. 다음부터는 번뜩 생각나도록 정리해보기로 했다. 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, so..
종류별로 해시를 이용하여 정보를 저장하는 것은 어렵지 않았다. 그런데, 조합의 갯수를 어떻게 구해야할지 어려웠다. 이론적으로 구할 수는 있었으나 코드로 구현하려면 너무 복잡해보였다. 다른 사람의 팁을 참고하여서 엄청난 풀이를 알아냈다..!!!😲 다음에 이런 종류의 문제에서 이런 사고방식을 떠올릴 수 있었으면 좋겠다. 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 c..
인덱스 접근 오류가 몇번 나서 고치는 것 말고는 문제 이해도 쉽고 풀기에도 어렵지 않았던 문제다. 다른 사람의 풀이를 보던 중, 나와 너무 다르고 쉽게 접근한 것을 발견했다. 그리고 문제 자체가 해시에 분류되어 있는 만큼 해시를 이용해 푼 풀이도 있었다. 그래서 정리를 해보려고한다. 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false..

C++에서 algorithm 헤더파일에서 순열을 구할 수 있는 함수가 있다. 함수에 벡터의 iterator 혹은 배열의 주소를 넣으면 다음 순열 혹은 이전 순열의 결과를 벡터나 배열에 적용할 수 있다. 예를 들어 1-2-3-4의 다음 순열은 1-2-4-3, 1-2-4-3의 이전 순열은 1-2-3-4 이다. - next_permutation : 현재 나와 있는 수열에서 인자로 넘어간 범위에 해당하는 다음 순열을 구하고 true를 반환한다. 다음 순열이 없다면(다음에 나온 순열이 순서상 이전 순열보다 작다면) false를 반환한다. - prev_permutation : 현재 나와 있는 수열에서 인자로 넘어간 범위에 해당하는 이전 순열을 구하고 true를 반환한다. 이전 순열이 없다면(다음에 나온 순열이 순서..
어찌저찌 풀기는 한 문제이다. 그런데, 시간과 공간복잡도가 너무 크게 나온것 같다 ㅠㅠ 다른 사람의 풀이를 보던 중, 훨씬 성능이 좋은 방법을 알게되었고 이 과정에서 새로운 것들을 많이 알게 되어 정리하려고 한다. 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니..

어렵지 않게 풀은 문제이다. 비트 연산자를 사용하여 풀은 다른사람의 풀이를 보고 아차 싶었다. C/C++의 개념들을 처음 배울 때 연산자 파트에서 비트 연산자에 대해 꼭 배운다. 실질적으로 사용해본적이 없어서 떠올리지를 못했던 것 같다. 매우쉽게 떠올릴 수도 있는데도 불구하고 말이다. 나는 비트 연산을 풀어서 코드를 구현했기 때문에 내용자체는 똑같았지만 비트 연산자를 사용한 코드가 더 간단하며 가독성도 좋고 성능도 좋기 때문에 정리하고 넘어가기로 마음먹었다. 😄 - 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했..

이번 문제는 접근 방식을 어떻게 해야할지 몰라 한참 고민을 하다가 다른 사람의 접근 방식을 참고하여 풀었다 ㅠㅠ 다음에 이런 비슷한 경우에 생각나서 풀 수 있도록 정리를 해봐야겠다. 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선 이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭지점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각 형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상태이기 때문에, 이 종이에 서 원래 종이의 가로, 세로 방향과 평행하..