Algorithm 11

시간 복잡도, 공간 복잡도

알고리즘의 '시간복잡도(Time Complexity)'와 '공간복잡도(Space Complexity)'는 알고리즘이 문제를 해결하는 데 걸리는 시간과 사용하는 메모리 공간의 양을 측정하는 데 사용되는 개념이다. 이들은 알고리즘의 성능을 분석하고 비교하는 데 중요한 지표들이다. 시간복잡도 알고리즘이 문제를 해결하는 데 소요되는 시간의 양을 나타내는 척도이다. 주로 연산의 횟수를 기반으로 한다. 알고리즘의 시간복잡도는 입력 크기에 대한 함수로 표현된다. 일반적으로 빅 오(Big O) 표기법을 사용하여 표현하며, 가장 큰 영향을 주는 항만을 고려한다. 예를 들어, O(1), O(log n), O(n), O(n^2) 등이 있다. 시간복잡도가 작을수록 알고리즘의 실행 시간이 적고 효율적으로 동작한다. 따라서 알고..

Algorithm 2023.07.28

자료구조(List, Set, Map)

List List 인터페이스는 중복을 허용하면서 저장 순서가 유지되는 컬렉션을 구현하는데 사용된다. List 인터페이스에서 지원하는 클래스는 ArrayList, LinkedList 등이 있다. 동일한 특성의 데이터들을 묶는다는 것과 반복문 내에 변수를 이용해서 하나의 묶음 데이터들을 모두 접근할 수 있다는 점에서 배열과 비슷하다. 하지만, 리스트는 길이가 가변적이다. 이를 동적 할당이라고 하는데, 처음 선언하고 그 길이를 변경할 수 없는 배열과 달리 리스트는 데이터를 추가하고, 삭제함에 따라 길이를 변경할 수 있다. 또한, 데이터들이 연속적으로 나열된다. (메모리에 연속적으로 나열되지 않고, 각 데이터들은 주소로 연결되어 있다.) 그리고, 각각의 데이터들 사이에 빈 공간을 허용하지 않는다. List 장단..

Algorithm 2023.07.24

프로그래머스 - 신규 아이디 추천 (JAVA)

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. - 아이디의 길이는 3자 이상 15자 이하여야 합니다. - 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. - 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이..

Algorithm 2023.04.09

프로그래머스 - 콜라츠 추측 (JAVA)

문제 설명 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, sol..

Algorithm 2023.04.08

프로그래머스 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (MYSQL)

문제 설명 다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. USED_GOODS_FILE 테이블은 다음과 같으며 FILE_ID, FILE_EXT, FILE_NAME, BOARD_ID는 각각 파일 ID, 파일 확장자, 파일 이름, 게시글 ID를 의미합니다. 문제 USED_GOODS_BOARD와 USED_GOODS_F..

Algorithm 2023.03.25

프로그래머스 - 자동차 평균 대여 기간 구하기 (MYSQL)

문제 설명 다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 ..

Algorithm 2023.03.24

프로그래머스 - 배열의 유사도 (JAVA)

문제 설명 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ s1, s2의 길이 ≤ 100 1 ≤ s1, s2의 원소의 길이 ≤ 10 s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다 s1과 s2는 각각 중복된 원소를 갖지 않습니다. 입출력 예 s1 s2 result ["a", "b", "c"] ["com", "b", "d", "p", "c"] 2 ["n", "omg"] ["m", "dot"] 0 나의 풀이 class Solution { public int solution(String[] s1, String[] s2) { int answer = 0; for(int i=0; i

Algorithm 2023.03.18

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

문제 설명 머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 30 문자열은 알파벳 소문자로만 이루어져 있습니다. 입출력 예 babbling result ["aya", "yee", "u", "maa"] 1 ["ayaye", "uuu", "yeye", "yemawoo", "ayaay..

Algorithm 2023.03.17

프로그래머스 - 모음제거 (JAVA)

문제설명 영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 my_string은 소문자와 공백으로 이루어져 있습니다. 1 ≤ my_string의 길이 ≤ 1,000 입출력 예 my_string result "bus" "bs" "nice to meet you" "nc t mt y" 나의 풀이 class Solution { public String solution(String my_string) { return my_string.replaceAll("[aeiou]", ""); } }

Algorithm 2023.03.17