알고리즘/코딩테스트 6

📑 코딩테스트 필수 수학 개념

1. 나머지 연산(Modulo Operation)나눗셈의 나머지를 구하는 연산. 표기는 mod로 하고 프로그래밍 언어에서는 대부분 %연산자로 사용한다. 나머지 연산의 경우 아래와 같이 분배법칙이 가능한데 사칙 연산 중 나눗셈 연산을 제외하고 적용된다.(A+B)%C = (A%C + B%C)%C(A-B)%C = (A%C - B%C)%C(A*B)%C = (A%C * B%C)%C더보기/** * 나머지 연산 */public static void modulo() { System.out.println(" 5 % 3 = " + 5 % 3); System.out.println("10 % 3 = " + 10 % 3); System.out.println("10 % 2 = " + 10 % 2); int ..

📑 코딩테스트 필수 자료구조

파이썬 VS 자바 1. 배열 (시간 복잡도) => O(1) 입력값의 크기와 무관하게 일정한 속도, O(c) => 상수 시간만큼의 복잡도언어 구분파이썬자바정의다양한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조동일한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조 (Primitive / Wrapper)선언list = []int [] arr = new int[]; ArrayList aList = new ArrayList();추가list.append(값) O(1)arr[idx] = 값;aList.add(값); O(n) : 배열이 꽉찬 경우 확장 및 복사삭제list.pop(idx) O(n) list.pop() 맨 뒤의 원소 삭제 O(1)arr[idx] = 0;aList.remove(idx or ..

📑 2021_KAKAO_BLIND_RECUITMENT_메뉴리뉴얼_HASHMAP

https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 오늘은 오랜만에 카카오 코딩테스트 문제를 풀어보았다. 항상 Eclipse와 같은 IDE로 코드를 쳐보다가 프로그래머스로 제출할 때는 항상 낯선 기분이 든다. 정말 세세하게 어떤것은 괄호를 붙이는지, 함수의 대소문자는 어떤지에 대해 많은 회고의 시간을 갖게 한다. 나중에 간단한 손코딩 문제도 많이 푼다고 하던데,, 종종 연습을 시작해야 겠다는 생각이 들었다. 이런저..

📑 2022KAKAO BLIND RECRUITMENT[신고결과받기]_해시LV.1

문제와 예시를 읽어보면 생각보다 복잡하지 않은 문제입니다. 필자는 중복을 제거하기 위해 HashSet을 사용했습니다. 문제를 읽어보고 지켜야할 조건을 분석해보면 다음과 같습니다. 한 번에 한 명의 사용자만 신고할 수 있다. 같은 사람에게 여러 번 신고당한 경우 1이상 count하지 않는다. k번 이상 신고를 당한 사람은 이용이 정지당하며, 이용이 정지당한 사람을 신고한 사람에게 메일을 보낸다. 이때 id_list에 있는 사람들의 각각 메일을 받은 횟수를 count해야 한다. 위의 조건들을 살펴보자면 일단 중복을 제거해야 합니다. 중복의 조건은 신고 당한 사람을 기준으로 해당 사람을 신고한 사람이 중복되면 안됩니다. -> 필자는 이 부분에서 HashSet을 사용하기로 마음먹었습니다. report의 요소를 ..

📑 2020 카카오인턴쉽 [완주하지 못한 선수] Lv.1

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 오늘 사용할 맵의 가장 큰 특징은 실제 데이터를 key-value의 한 쌍으로 저장한다..

📑 2020 카카오 인턴쉽 [키패드 누르기] Lv.1

문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1..