주어진 조건을 만족하지 않으면, 조건을 만족하면서, 사용자가 입력한 ID와 유사한 ID를 추천하는 문제
서로 다른 목적지를 가는 2명이 같은 곳에서 택시를 탈 때, 나올 수 있는 최소 택시 요금을 구하는 문제
문제에서 제시한 조건을 만족하는 새로운 메뉴를 만드는 문제
문의조건을 만족하는 지원서들의 수를 찾는 문제
키를 조작하여, 같은 카드 2장을 찾고 보드 안에 있는 해당카드들을 지운다. 모든 카드를 보드에서 지우려고 할 때, 나올 수 있는 최소 조작 횟수를 구해야 한다.
2016년의 특정 날짜의 요일을 구하는 문제
주어진 수를 3진법으로 변환 후, 앞 뒤로 뒤집고 10진법으로 변환하여 나온 값을 구하는 문제
집에서 학교까지 웅덩이를 피하면서 갈 때, 나올 수 있는 최단 경로의 수를 구하는 문제.
이거 푼 사람들은 쉽다고 하던데... 나는 못 풀어서 포스팅에 있는 글을 봤다.숫자 N이 주어졌을 때, 피연산자로 N, NN, NNN, NNNN, ...을 활용 할 수 있다. 원하는 피연산자들을 선택하고, 사칙연산(+, -, \*, /)을 하여 number을 구할 때,
토너먼트 대회에서 A번 참가자가 B번 참가자를 몇 번째 라운드에서 만나는지 구하는 문제.
1시간에 작업량 1을 처리하는 Demi가 N시간 동안 남아 있는 일들을 하려고 한다.야근 피로도를 남아있는 일들의 제곱의 합이라고 정의 할 때, 야근 피로도의 최소 값을 구해야한다.
키와 자물쇠가 주어졌다. 자물쇠를 풀어야하는데, 키를 이동시키거나 회전시켜서 키의 돌기와 자물쇠의 홈이 맞으면 자물쇠가 풀린다. 자물쇠와 키는 홈과 돌기로 구성된다. 주의해야할 점은 키의 돌기와 자물쇠의 돌기가 만나면 안된다. 자물쇠가 풀리는지 풀리지 않는지 확인하는
전체 아이디 사용자 목록과 불량 사용자 목록을 매핑할 때 나올 수 있는 경우의 수를 구하는 문제. 불량 사용자 목록에 있는 사용자 ID는 개인정보 보호를 위해 1자리 이상 \*처리 되어있다.제제 아이디 목록들을 구했을 때, 이들이 나열된 순서와 관계없이 아이디 목록 내
연산자 우선순위를 임의로 바꿨을 때, 주어진 수식에서 나올 수 있는 값 중 절대 값이 가장 큰 값을 구하는 문제.순열을 이용하여, 연산자 순서로 나올 수 있는 경우를 구한다. 주어진 순서대로 연산을 실행하여 수식에서 나온 값 중 절대 값이 가장 큰 값을 구하면 된다.아
각 대기실에 있는 응시자가 거리두기를 잘 지키고 있는 지 알아보는 문제.응시자간 사이의 거리를 맨해튼 거리로 정의하고 맨해튼 거리가 2이하이면 거리두기를 못 지켰다고 할 수 있다. 단, 맨해튼 거리가 2이하이더라도, 중간에 파티션이 존재하면 거리두기를 잘 지킨 것이다.
숫자 영단어와 숫자가 들어있는 문자열은 숫자로 치환하는 문제문자열에 있는 문자들을 탐색하면서 탐색된 문자가 숫자 문자이면, answer에 이어붙이고 영문자를 이어붙이는 역할을 하는 변수(word)에 추가한다. 만약 변수의 값이 숫자 영단어가 되면 숫자 영단어에 해당하는
자소서 다듬고, 1,2차 면접 준비하느라 알고리즘에 신경을 못쓰다가 오랜만에 문제 풀었는데, 실력 많이 떨어진 것을 많이 느꼈다. 처음에 이 문제를 풀었을 때, 1번째 스티커를 뜯을 때, 2번째 스티커를 뜯을 때, 마지막 스티커를 뜯을 때만 고려하면 되는 줄 알았는데,
문제에서 주어진 표를 Double linked list로 표현한다. 나의 경우 아래의 그림처럼 표현했다.header와 tail를 두는 이유는 node 0의 왼쪽 링크가, node 2의 오른쪽 링크가 None을 가리키는게 마음에 안들어서 추가했다. 이러한 이유로 head
심사관의 입장에서 문제를 바라보자. "주어진 시간"동안 심사관 1명당 처리할 수 있는 입국자 수를 구한다.여기서, "주어진 시간"은 어떻게 찾을까?? 우선 제한사항에 따르면, 심사관이 입국자를 심사하는데 최소 1분이 걸리기 때문에, 최소값은 1이다. 그리고 모든 입국자
최소 비용으로 모든 섬을 연결한다 -> 최소 비용 트리로 접근해서 해결한다. 따라서 크루스칼 알고리즘으로 해결하면된다.섬의 개수가 n이라면 모든 노드를 연결하기 위한 필요한 간선의 개수는 n-1이다. 그리고 최소 값을 구하기 위해선, 최소 간선들을 찾으면 되는데 주의해
효율성 테스트에서 틀리겠지만, 우선 단순하게 생각하자. 초기에 1명이 징검다리를 건너면 돌에 적힌 숫자는 1씩 차감된다. 그리고 2번째 사람이 징검다리 앞에 있다. 2번째 사람부터 징검다리를 건널 수 있는지 확인해야한다. 연속적으로 숫자 0이 적힌 돌의 개수가 k개이면
하루 2시간씩 시도해서 3~4일차에 완료했다. 다른 사람들 코드보면 100줄 이내던데, 난 191줄이다..ㅠㅠ게임보드에서 빈칸들을 찾고 테이블에서 존재하는 모든 퍼즐조각을 찾는다. 각 빈칸에 대해 모든 퍼즐조각을 대입해본다. 만약 매칭이되면, 게임보드에서 퍼즐조각을 채
투 포인터로 해결해야할 것 같긴한데, 아이디어가 떠오르지 않아 다른 분의 문제풀이를 참고했다. 해당 글의 핵심을 아래와 같이 이해했다.구간\[a, b]에서 모든 종류의 보석을 살 수 있을 때부터 a+=1를 한다.(i.e. 구간의 범위가 좁아졌다.) 그리고 모든 범위의
문제의 조건 중 1,2,3은 큰 값이 먼저오고, 4는 작은 값이 먼저온다. 그래서 4의 경우에 대해 음의 부호를 붙여서 정렬하면 편리하다. 내 코드의 경우, 1,2,3에 음의 부호를 붙여서 정렬했다. 주의해야할 점은 승률을 계산할 때, //를 쓰면 안되고, 분모가 0이
문제에서 입실과 퇴실이 동시에 이뤄지는 경우가 없다는 사실을 이용하자. 핵심은 현재 회의실에 있는 사람들을 leave의 순서에 맞게 퇴실 시킬 수 있다면, 그 순서만큼 퇴실시키고 그 다음에 입실을 진행하면 된다. 입출력 2번째 예제를 토대로 설명하면 아래와 같다.현재
n개의 원소들간의 차이가 거의 없으면서 합이 s일때, 각 원소의 곱이 최대가 된다. 따라서 우리가 해야할 일은 각 원소의 차이가 없으면서 합이 s를 이루는 원소들을 찾는 것이 목표다. 원소를 구하기 위한 간단한 방법으로 나눗셈이 있다. s를 n으로 나누면 몫과 나머지가
grid의 길이가 전체 칸의 행의 길이, grid안 의 문자열 길이가 전체 칸의 열 길이와 같다. 예를 들어, grid가 \["SR". "LR"]이면 그래프는 아래와 같다.그 다음 고려해야할 것은 방향이다. 예를 들어 초기 진입으로 1행 1열에 해당하는 S에 들어갈 때
sizes를 순회하면서, 세로가 가로보다 크면, 가로와 세로를 바꿔준다. 이후 가로에서 가장 큰 값을 찾고, 세로에서 가장 큰 값을 찾은다음, 이들을 곱해준다.
어떻게 접근할 지 몰라서 해설을 봤다. 공식 해설을 참조했다. a의 모든 원소의 합이 0이되는 지 확인한다음, 0이 아니면 -1를 리턴하고 0이면 edges를 이용하여 트리를 만든다. 그리고 임의의 노드를 1번째로 탐색할 노드로 선택해서 dfs한다. dfs에서 나온 결