python

    [프로그래머스] [1차] 캐시

    https://programmers.co.kr/learn/courses/30/lessons/17680?language=python3 cache에는 참조한 순서대로 city가 저장된다. (가장 최근에 참조한 city는 맨 뒤에 존재!) 2. 다음과 같은 과정을 cities배열에 돌며 반복한다. 2-1) cache에 현재 city의 값이 존재 하는 경우 -> 실행시간 1 증가 -> cache에서 가장 최근에 참조한 city는 cache의 마지막 위치에 존재해야 함 따라서 cache에서 참조한 city를 제거하고 다시 마지막 위치에 추가 2-2) cache에 현재 city의 값이 존재 하지 않는 경우 -> 실행시간 5 증가 -> cache에 city 추가 -> cache의 크기가 허용된 크기보다 크다면 cac..

    [리트코드] 41. First Missing Positive

    [리트코드] 41. First Missing Positive

    [문제 간단 설명] 시간복잡도 O(n) 이하로, 정렬되지 않은 정수 배열 nums가 주어졌을 때, nums에 존재하지 않는 가장 작은 양의 정수 구하기 [풀이 방법] 1. 주어진 nums배열 정렬 2. answer = 1로 선언 및 초기화 3. nums의 원소값들을 반복하며 answer과 값이 같을 경우 answer을 1증가, 양수이고 answer보다 큰 값을 가질 경우 반복문을 빠져나감 4. answer 반환 * 3의 조건 중 "양수이고 answer보다 큰 값을 가질 경우 반복문을 빠져나감"의 조건이 없어도 정답을 반환한다. 하지만 [1, 2, 3, 5, 6, 7]과 같은 상황에서 해당 조건을 추가하면 전체를 반복하지 않고 정답을 찾을 수 있기 때문에 시간측면에서 유리하다. [코드_Java] impor..

    [프로그래머스] 오픈채팅방

    풀이 방법 1. HashMap을 사용하여 아이디별 최종닉네임을 저장할 변수 nickname 선언 (HashMap은 key, value로 이루어진 자료구조) 2. record의 모든 값들을 반복하며 들어오는 경우와 닉네임을 변경하는 경우, 각 아이디별 닉네임을 갱신 3. 메세지를 작성할 ArrayList 선언 이때, 배열이 아닌 ArrayList를 사용한 이유는 나갈경우에는 메세지를 작성하지 않아 record 의 길이와 메세지가 들어갈 배열의 길이가 같지 않기 때문임 사실 변수를 사용하면 해결 될 문제지만 코드가 길어지고 가독성이 좋지 않을것으로 판단되어 ArrayList사용 4. record의 모든 값들을 반복하며 들어오는 경우와 나가는 경우, 닉네임 변수에서 키로 값을 가져와 닉네임 + 메세지를 작성 ..

    [프로그래머스] 구명보트

    [프로그래머스] 구명보트

    풀이방법 보트의 개수를 최소로 만들기 위해서는 가능하다면 1개의 보트에 2명씩 태워야한다! 즉, 몸무게가 많이 나가는 사람을 태울 경우에 몸무게가 적은 사람들 중 같이 태울 수 있는 사람을 찾으면 유리할 것 같다고 생각하여 몸무게가 담긴 배열을 정렬하고 투 포인터를 사용했다 :) 1. 몸무게가 담긴 배열 오름차순 정렬 2. 아직 보트에 타지 않은 사람들 중 몸무게가 가장 적은 사람을 가리키는 포인터 left, 몸무게가 가장 많은 사람을 가리키는 포인터 right 선언 3. left가 가르키는 몸무게와 right가 가르키는 몸무게의 합이 limt 이하라면 그 두명을 태우고 left는 다음으로 몸무게가 적게 나가는 사람, right는 다음으로 몸무게가 많이 나가는 사람을 가르키도록 움직인다. 4. left..