수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.구조대 : 119박준영 : 97 674 223지영석 : 11 9552 4421전화번호부에 적힌
위장의상의 종류와 이름의 조합을 구하는 문제이다.첫번째 예시를 살펴보면 얼굴에서 고를 수 있는 가짓 수는 안경, 선글라스, nothing 3가지이다. 상의는 티셔츠, nothing 2가지이다. 이렇게 가짓 수를 모두 곱하면 정답을 구할 수 있다.단, 주의해야 할 점은
문제설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다.
탑송전탑을 가로로 세운 후 오른쪽 탑부터 왼쪽으로 송신, 더 높은 탑만이 수신 가능한 문제이다.1\. 맨 오른쪽 탑으로 간다.2\. 한 칸씩 왼쪽으로 가면서 자신보다 큰 탑을 찾는다.3\. 찾았으면 맨 오른쪽 배열에 찾은 탑의 index 번호 삽입, 못찾았으면 0 삽입
프린터priorities 배열이 주어졌을때, location 번째에 해당하는 배열은 몇번째에 출력되는지 구하는 문제이다.처음 주어진 priorities 배열에서 맨 앞의 숫자가 가장 큰 것이 아니라면 그 숫자를 맨 뒤로 보낸다. 나는 여기에서 큐를 써야겠다는 힌트를 얻
쇠막대기간단한 문제이다. ()를 만나면 레이저를 발사하는데, 레이저는 지금껏 쌓여있는 쇠막대기를 모두 관통한다. 솔직히 괄호만 보면 스택을 써야 한다는 고정관념에 스택을 사용했으나, 굳이 스택을 사용할 필요가 없는 문제이다. 대신 주어진 String을 스택에 넣는다고
문제 > 주식가격 문제풀이 이 문제 프로그램코드
K번째수자른다정렬한다index에 해당하는 값을 꺼낸다.
문제 > 더 맵게 문제 풀이 프로그램 코드
문제 > 소수 찾기 문제 풀이 숫자를 하나씩 분리한다. 분리된 숫자들로 만들 수 있는 모든 경우의 수를 구한다. 소수인지 판별한다.
카펫brown + yellow를 소인수 분해한다.brown + yellow를 편의상 A라고 치환하고, A가 어떤수의 제곱일 경우와 아닐 경우가 있다.제곱이 아닐경우 항상 소인수a X 소인수b 의 형태로 나온다.(a-2) X (b-2) = yellow 인 경우가 답이다.
오픈채팅방처음엔 유저 아이디와 닉네임을 담고 있는 Class를 만들어서 닉네임이 바뀌었을 경우 유저아이디를 찾아 닉네임을 바꿔주는 방식으로 코드를 짰는데, 테스트케이스를 죄다 틀리고 시간도 많이 경과 했기 때문에 다른 사람 풀이를 봤다. 거의 모든 사람이 해시를 이용해
실패율각 스테이지당 실패율을 계산한 후, 스테이지와 실패율을 담은 Class를 정의하여 우선순위 큐에 담는다. 그 후, Comparator를 이용하여 실패율을 기준으로 내림차순 정리하면 된다. 그다지 어렵진 않지만,만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테
스킬트리(https://programmers.co.kr/learn/courses/30/lessons/49993?language=python3스킬 트리가 주어지고 스킬 트리를 반드시 끝까지 배울 필요는 없지만, 선행 스킬을 배우지 않으면 안되기 때문에 순서가 중
멀쩡한 사각형w,h <= 1억 이기 때문에 O(w x h)의 시간 복잡도를 가지면 시간초과가 날 것이다. 처음 생각한 것은 w,h의 최대공약수를 구해서 w,h의 범위를 좁히고 답을 찾아나갈 생각이었지만, 두 수가 서로소인 경우는 이 방법이 통하지 않기 때문에 생각
구명보트처음에 생각한 것은 리스트에서 2개의 조합을 구해 limit를 넘지 않는 경우의 수를 모두 구하고 가장 많은 쪽을 택하려 했지만 구현이 너무 어렵고, 조합을 구한 후 제외시켜야 하기 때문에 리스트도 따로 만들어 체크해야 하기 때문에 메모리 낭비가 어마어마하다.
수식 최대화수식의 우선순위를 모두 구하고 식에 대입하여 나올 수 있는 최대 값을 구하는 문제이다. 우선순위가 나오는 경우는 최대 3! 이므로 리스트에 따로 저장해 두었다. 만일 수기로 작성하기 힘든 경우의 수가 나올 것 같으면 dfs, 순열, 조합등을 이용하여 구현하면
뉴스 클러스터링주어진 두 문자열에 대해 자카드 유사도를 구하는 문제이다. set을 사용하여 문제를 풀 수 있는데, set은 중복을 허용하지 않기 때문에 딕셔너리를 만들어 두 글자 문자열에 대한 count를 처리해 주었다.두 문자열을 lower 혹은 upper를 취해 소
삼각 달팽이이 문제에서 숫자는 각각 아래, 오른쪽, 대각선을 향해 증가하고 삼각형 하나를 그렸을 때 다시 아래로 움직이면서 증가한다. 이것이 무한히 반복되고 최종 숫자가 1~N까지의 합인 N X (N + 1) / 2 일 때 종료된다. 정해진 방향을 따라 이동한다.이동한
실패율실패율 자체를 구하는것은 어렵지 않다. 하지만 리스트에서 어떤 기준을 잡고 정렬을 할지 정해야 하기 때문에 람다식을 활용하여 정렬했다. 각 스테이지당 실패율을 구한다.실패율을 (스테이지, 실패율)의 형식을 갖는 튜플 형식으로 저장한다.실패율, 스테이지 순으로 우선
무지의 먹방 라이브일단, 효율성 테스트에서 k의 값이 20조이하가 주어집니다. 여기서 생각할 수 있는 것은 절대 완전탐색으로는 효율성 테스트를 통과할 수 없다 입니다. 저도 완전탐색으로 처음에 쉽게 접근했다가 효율성 테스트에서 무릎을 꿇었습니다.우선 순위 큐를 이용하여
신규 아이디각종 코딩테스트 1번을 담당하고 있는 문자열 처리 문제입니다. 주어진 요구사항대로 구현만 하면 되서 문자열 처리 관련 메소드를 잘 알고 있어야 합니다.중요한 점은 반드시 요구사항대로 정확하게 구현하는 것입니다.1단계 new_id의 모든 대문자를 대응되는 소문
문제 > 합승 택시 요금 문제 해설 풀이 코드
문제알아볼 수 없는 숫자와 주어진 로또 번호로 최고 순위와 최저 순위를 매기는 문제입니다.알아볼 수 없는 숫자는 0으로 되어있고, 하나를 맞춘 것은 모두 다 못맞춘 것과 동일하게 낙첨입니다. 최고 순위가 되려면 0으로 되어 있는 숫자를 모두 정답, 최저 순위가 되려면
순위 검색주어진 query에 따라 해당 점수 이상인 사람이 몇명인지 찾는 문제입니다.정확성과 효율성 테스트를 모두 통과해야 하므로 효율적인 알고리즘을 써야합니다. 정확성 테스트같은 경우에는 주어진 쿼리에 따라 info를 완전 탐색하면 통과할 수 있습니다. 하지만 1 &
메뉴 리뉴얼딕셔너리와 조합을 이용해 푸는 문제입니다.각 제한사항을 꼼꼼히 확인한 뒤, 조합을 써도 시간이 넉넉할 것 같아 조합을 사용해 풀었습니다.answer를 리턴할 때 안에 있는 요소들은 정렬된 상태여야 하며, 요소 안의 문자들도 정렬이 된 상태여야 합니다.일단 o
행렬 테두리 회전하기x1,y1,x2,y2를 받고 주어진 그래프를 회전하며 가장 작은 값을 저장하는 문제입니다.가장 핵심은 행렬을 회전하는 부분을 어떻게 구현하냐 인데, 저 같은 경우 방향 변수 d를 놓고 4가지 방향을 모두 끝내면 종료하는 식으로 구현했고, 다른 방식이
문자열 압축주어진 문자열을 인덱스 0부터 시작해 반복되는 문자열이 존재하면 압축하는 문제입니다.문자열을 한 칸씩, 두 칸씩, ... N 칸씩 검사하면 되는데, 굳이 N까지 검사하지 않아도 N / 2까지만 검사하면 그 뒤는 어차피 압축되지 않기 때문에 검사할 필요가 없습
괄호 변환주어진 요구사항에 따라 구현하는 문제입니다.문자열을 두 문자열로 분리하고 이 두 문자열들을 또 분리하는 과정이 있기 때문에 재귀 형태로 구현했습니다.일단 균형잡힌 문자열과 올바른 문자열에 대해 정확히 이해하면 균형잡힌 문자열은 )로 시작해도 상관 없으나 개수가
프렌즈4블록주어진 요구사항에 따라 구현하는 문제입니다.블록 삭제일단 2 \* 2모양의 블록을 살펴 본 뒤, 그 4개의 블록이 모두 일치한다면 블록이 사라집니다. 다만, 바로 사라지게 하는 것이 아니라 모든 board를 모두 탐색 한 뒤 삭제해야 합니다. 바로 삭제해버리
다단계 칫솔 판매하나의 노드로 부터 부모를 타고 올라가 루트까지 도달하는 문제입니다.union-find의 find와 parents 개념을 사용하면 쉽게 접근할 수 있습니다.다만, 여기서 중요한 점은 1 <= enroll <= 10,000, 1<= sel
2 x n 타일링정상적으로 타일을 배치하려면 마지막에 반드시 ㅣ 혹은 = 가 들어와야 합니다.n = 4인 경우를 예시로 들면 다음과 같이 ㅣ 블럭으로 끝나면 빨간색, =블럭으로 끝나면 파란색으로 나누었습니다.각 경우는 n=3인 모든 경우에 빨간 블럭을 더한 것 + n=
파괴되지 않은 건물1 <= N,M <= 1,000이며 1 <= skill <= 250,000이기 때문에 일반적인 방법으로는 시간초과를 피할 수 없다. 가장 일반적으로 문제를 푸는 방법은 skill대로 2차원 배열을 일일이 탐색한 뒤, degree를