H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수
무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.예를 들어, 사람들의 몸무게가 70kg, 50kg, 80kg, 50kg이고 구명보트의 무게 제한이 100kg이라면 2번째 사람
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.구조대 : 119박준영 : 97 674 223지영석 : 11 9552 4421전화번호부에 적힌
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 6, 10, 2라면 6102, 6210, 1062, 1026, 2610, 2106를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양
어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. > 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작
길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 1, 5, 2, 6, 3, 7, 4, i = 2, j = 5, k = 3이라면array의 2번째부터 5번째까지 자르면 5, 2, 6, 3입니
스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다.스파이가 가진
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만
셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다.(a1, a2, a3, ..., an)튜플은 다음과 같은 성질을 가지
게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다.U: 위쪽으로 한 칸 가기D: 아래쪽으로 한 칸 가기R: 오른쪽으로 한 칸 가기L: 왼쪽으로 한 칸 가기캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5,
트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다.※ 트럭이
조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다.ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA조이스틱을 각 방향으로 움직이면 아래와 같습니다.예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다.name은 알파벳 대문
블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록".같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다.만약 판이 위와 같이 주어질 경우, 라이언이
프렌즈대학교 컴퓨터공학과 조교인 제이지는 네오 학과장님의 지시로, 학생들의 인적사항을 정리하는 업무를 담당하게 되었다.그의 학부 시절 프로그래밍 경험을 되살려, 모든 인적사항을 데이터베이스에 넣기로 하였고, 이를 위해 정리를 하던 중에 후보키(Candidate Key)
여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다.개
\[문제 출처 : 프로그래머스]데이터베이스를 구축하는 느낌으로고유값인 아이디를 Key로 가지고 닉네임을 Value로 가지는 딕셔너리를 만들었다.이러면 나중에 닉네임이 변경되어도 어차피 해당 ID의 Value를 가져오기만 하면 돼서 따로 고려할 문제가 없었다.딕셔너리에
\[문제 출처 : 프로그래머스]주식의 가격이 담긴 배열(prices)의 값을 순서대로 스택에 Push해준다.스택의 Top과 prices를 비교해서 가격이 떨어지지 않은 기간을 계산해준다.더 이상 Push할 값이 없을 때까지 반복한다.스택을 이용하여 간단하게 풀 수 있는
\[문제 출처 : 프로그래머스]재생시간이 몇분인지 계산하고,그 재생시간 동안 실제로 라디오에서 재생된 음정들을 구해서 저장한다.그리고 그것을 네오가 기억한 멜로디와 비교해서 결과를 구하면 된다.그런데 음정들이 문자열로 주어지는데 \`
\[문제 출처 : 프로그래머스]주어진 문자열을 주어진 조건에 맞게 잘라주면 된다.나는 우선 flag와 isdigt()을 사용하여, 처음으로 등장하는 숫자까지를 잘라서 HEAD로 저장하고,그 다음 다시 알파벳이 나올 때 까지를 잘라서 NUMBER로 저장하고 나머지를 TA
\[문제 출처 : 프로그래머스]크기가 n인 리스트를 만들고, 각 학생의 체육복 개수를 저장한다.(처음엔 1, 도난당한 학생은 -1, 여벌의 체육복을 가져온 학생은 +1)그 후 리스트에서 0을 찾는다.(수업을 들을 수 없는 사람)앞 뒤 학생이 여벌의 옷을 가지고 있는지
\[문제 출처 : 프로그래머스]문제 자체는 어렵지 않았다.그냥 리스트에서 작은 값 두 개를 꺼내서 계산만 해주면 되는데,이 때 그냥 리스트를 오름차순 정렬하여 순서대로 꺼내어 계산하는 방식으로 풀었더니, 효율성 테스트를 통과할 수 없었다.그래서 heqpq를 import
\[문제 출처 : 프로그래머스]1\. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.2\. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.3\. 그렇지 않으면 J를 인쇄합니다.문제에서
\[문제 출처 : 프로그래머스]LRU 알고리즘을 고대로 구현하면 되는 문제이다.LRU는 가장 오랫동안 참조되지 않은 것을 교체하는 알고리즘이기 때문에,cache hit시에 해당 페이지를 삭제한 후 다시 맨 뒤에 append해주고, 페이지를 교체할 때는 맨 앞의 것을 p
[문제 출처 : 프로그래머스]progresses의 값들과 speeds의 값들을 이용해서 각 기능이 배포까지 몇 일이나 걸리는지 구한다.이 때 배포는 하루의 끝에 이루어진다고 가정하기 때문에 올림을 사용해야한다.올림을 사용할 때 ceil을 사용하지 않고 \-((p -
[문제 출처 : 프로그래머스]나는 단순하게n과 m의 최대공약수를 구할 때1부터 n,m 중 더 큰 수까지 반복문을 돌면서둘 다 나누어 떨어지는 수 중 가장 큰 수를 구했다.그리고 최소공배수를 구할 때는n,m중 더 큰 수를 기준으로 \*2,3,4....이렇게 곱해나가면서
\[문제 출처 : 프로그래머스]쉽지만 재미있는 문제였다.처음에 약수의 개수를 구하는 함수를 만들고어떻게 효율적으로 구할 수 있을까를 고민했다.그 결과 어차피 약수는 쌍으로 이루어져 있기 때문에n의 약수를 구할 때 n을 1부터 루트n까지의 수로 나누어서나누어 떨어지는 수
📃 문제 설명 >## 예상 대진표 [문제 출처 : 프로그래머스] 👨💻 해결 방법 > 천천히 생각해보면 정말 간단한 문제 ! 토너먼트 형식이기 때문에 1,2 -> 1 3,4 -> 2 5,6 -> 3 ... 이 계산을 반복하면서 라운드 수를 카운트 해주고, a,
📃 문제 설명 >## 약수의 개수와 덧셈 [문제 출처 : 백준] 👨💻 해결 방법 > 처음에는 주어진 크로아티아 알파벳들을 문자열과 일일이 비교해서 문자열의 총 길이에서 빼주는 방식으로 생각을 했는데, > 어차피 크로아티아 알파벳을 한 개로 세기만 하면 되니까
📃 문제 설명 >## 삼각 달팽이 [문제 출처 : 프로그래머스] 👨💻 해결 방법 > 골 때리는 문제였다.. > 처음에는 어떤 규칙을 찾아서 배열에 착착착 넣고 싶었는데 아무리 짱구를 굴려봐도 잘 안됐다. > 그래서 그냥 달팽이에 채울 숫자의 최대값을 구하고 n
📃 문제 설명 >## 바이러스 [문제 출처 : 백준] 👨💻 해결 방법 > 1번 컴퓨터랑 연결되어 있는 것들의 수를 구하면 되는 간단한 문제였다 > DFS, BFS 둘 다 가능하겠지만 난 DFS가 좋앙~ > 문제에서 주어진 대로 그래프를 만들고, DFS함수 구현
📃 문제 설명 >## 약수의 개수와 덧셈 [문제 출처 : 백준] 👨💻 해결 방법 > 그냥 DFS와 BFS에 대한 기본적인 문제였다. 따로 설명할게 없다.. > 입력받은 대로 그래프를 만든 후 dfs, bfs를 구현하여 결과를 구하면 된다.. 끝 ! 👨💻
\[문제 출처 : LeetCode]배열의 값들 중에 어떤 두 수를 더해야 target값이 되는지 구해서 인덱스를 반환하는아주아주 간단한 문제였다.처음에는 그냥 단순히 이중 for문을 이용하여 다 더해서 비교를 하려했는데문제가 너무 쉬워서 그런지 오히려 다른 방법은 없을
📃 문제 설명 >## 트리의 부모 찾기 [문제 출처 : 백준] 👨💻 해결 방법 > 노드의 부모를 저장할 리스트 answer를 만든다. (answer[2]의 값은 2번 노드의 부모) > 그 후 주어진 stack을 이용하여 입력대로 저장되어 있는 graph를 깊이
📃 문제 설명 >## Reverse Integer [문제 출처 : LeetCode] 👨💻 해결 방법 > 주어진 정수를 뒤집어서 반환하면 되는 간단한 문제였다. > 나는 우선 음수인지 양수인지를 판단한 후에, 음수면 양수로 바꿔주고 > 몫과 나머지를 이용해서 정
📃 문제 설명 >## Palindrome Number [문제 출처 : LeetCode] 👨💻 해결 방법 > Palindrome(펠린드롬)은 앞뒤가 똑같은 회문을 뜻한다. > 회문인지 확인하기 위해서는 맨 앞과 맨 뒤에 접근하여 비교해보면 된다. 문제를 보면
📃 문제 설명 >## Check If N and Its Double exist [문제 출처 : LeetCode] 👨💻 해결 방법 > 주어진 정수배열에서, 특정 원소 n에 대하여 n*2 원소가 있는지 체크하는 문제 > 처음에는 그냥 for와 in을 사용하여서 단
📃 문제 설명 >## Roman to Integer [문제 출처 : LeetCode] 👨💻 해결 방법 > 재미있는 문제.. > 우선 딕셔너리를 구현해서 각 로마숫자에 맞는 아라비아 숫자를 저장했다. > 문제는 'IV' 는 4, 'VI'는 6,,, 이처럼 큰숫자
📃 문제 설명 >## Longest Common Prefix(LCP) [문제 출처 : LeetCode] 👨💻 해결 방법 > LCP 문제는 전에도 몇 번 풀어봤는데, 처음 본 문제처럼 생소했따.. 슬펐다 .. > 우선 접두사의 최대 길이는 주어진 문자열 중 가장
📃 문제 설명 >## Valid Parentheses [문제 출처 : LeetCode] 👨💻 해결 방법 > 그냥 괄호의 짝을 검사하는 문제였다. > 기본적으로 스택을 이용하고 열린 괄호와, 닫힌 괄호를 구분하여 조건에 따라 push, pop한다. 👨💻
\[문제 출처 : LeetCode]아주아주아주 오랜만에 Linked List를 다뤄볼 수 있는 기회였다.주어진 두 연결 리스트는 이미 정렬되어 있기 때문에,반복문을 통해 각 연결 리스트의 노드들을 순회하며작은 값을 가져와서 head에 연결시키며 진행하면 된다.Input
📃 문제 설명 >## Search Insert Position [문제 출처 : LeetCode] 👨💻 해결 방법 > 주어진 수가 리스트에 있으면 인덱스를 반환하고, 없으면 오름차순 정렬 기준, 삽입되어야할 올바른 인덱스를 찾아서 반환하면 된다. > 처음에는
📃 문제 설명 >## Maximum Subarray [문제 출처 : LeetCode] 👨💻 해결 방법 > 원소들의 합이 가장 큰 Subarray를 구하는 문제. DP로 풀었다. > dp 배열을 만들어서 Subarray의 합을 저장할건데, 이때, dp[i]의 의
\[문제 출처 : LeetCode]주어진 정수 배열의 값들을 이어서 하나의 정수로 보고,1을 더한 값을 다시 정수 배열 형태로 반환하는 문제.첫 번째로,주어진 배열의 원소들을 각각 문자열로 변환하고, join을 통해 하나의 문자열로 만든 다음,정수로 형변환을 해서 다루
📃 문제 설명 >## Plus One [문제 출처 : LeetCode] 👨💻 해결 방법 > 두 개의 이진수가 문자열로 주어지면 더해서 반환하면 된다. > 계산을 편하게 하기 위해서 두 이진수를 모두 십진수로 변환해서 더하고 다시 이진수로 변환했다. > 너무 간
📃 문제 설명 >## Climbing Staris [문제 출처 : LeetCode] 👨💻 해결 방법 > DP문제이다. > 1개의 계단을 오르는 방법은 한가지, f(1) = 1 2개의 계단을 오르는 방법은 두가지, f(2) = 2 > 3개의 계단을 오르는 방법은
📃 문제 설명 >## Same Tree [문제 출처 : LeetCode] 👨💻 해결 방법 > 재귀를 이용하여 풀었다. > 우선 현재 노드의 val을 같은지 비교하고, 왼쪽 자식, 오른쪽 자식으로 넘어가는 방식으로 풀었는데 > 그 과정에서 p나 q중에 None이
📃 문제 설명 >## Binary Tree Inorder Traversal [문제 출처 : LeetCode] 👨💻 해결 방법 > Inorder traversal(중위 순회)를 구현하는 문제였다. 문제를 풀면서 전위, 중위, 후위 순회에 대해 다시 공부했다.
📃 문제 설명 >## Convert Sorted Array to Binary Search Tree [문제 출처 : LeetCode] 👨💻 해결 방법 > 이분탐색을 하듯이 트리를 만든다. > 오름차순으로 정렬되어 있기 때문에 중앙에 있는 값을 root로 하고,
\[문제 출처 : LeetCode]조합을 이용하여 풀었다.짝을 찾기 위해서는 n개의 수 중에서 나를 제외한 n-1을 선택하는 경우의 수이기 때문에nCn-1 을 구하면 된다.조합을 직접 구할 필요는 없고 개수만 알면 되기 때문에,딕셔너리를 이용해서 풀었다.근데 풀고나서
[문제 출처 : LeetCode]0과 1로만 이루어지고, 1로 시작하는 수를 deci-binary라고 한다.주어진 n을 deci-binary의 합으로 만들 때 필요한 최소 deci-binary의 개수를 구하면 된다.처음에 문제가 이해가 안됐다.결국 0과 1로만 이루어
\[문제 출처 : LeetCode]Dynamic Programming 태그에서 문제를 골랐는데, 문제를 보고 DP로 접근하기가 쉽지 않아서 갸우뚱했다.0부터 n까지의 수를 비트로 표현했을 때 1의 개수를 세어 반환하면 되는 문제이다.나는 말그대로 0부터 n까지의 수를
📃 문제 설명 >## Split a String in Balanced Strings [문제 출처 : LeetCode] 👨💻 해결 방법 > 주어진 문자열 s는 같은 개수의 'L'과 'R'로 이루어진 Balanced String이다. 이 s를 최대 몇 개의 Bal
📃 문제 설명 >## Deepest Leaves Sum [문제 출처 : LeetCode] 👨💻 해결 방법 > 이진 트리가 주어지는데, 최대 깊이에 있는 노드들의 값의 합을 구하는 문제. > 우선 트리의 깊이(높이)를 구하기 위해 stack을 사용하여 dfs를
\[문제 출처 : 백준]정말 말그대로 greedy하게 풀었다.최소 비용으로 이동을 하려면,다음 도시들의 기름값이 얼마인지 확인하고,내가 더 비싸면, 이후 이동할 때 필요한 기름을 현재 주유소에서 다 넣고,만약 현재 주유소보다 저렴한 곳이 다음 도시 중에 있다면,우선 거
📃 문제 설명 >## 배 [문제 출처 : 백준] 👨💻 해결 방법 > n개의 크레인이 담을 수 있는 최대 무게, m개의 박스의 무게가 주어진다. > 최소 시간으로 박스를 옮기려면 가능한 한번에 많은 크레인이 동시에 움직여야 한다. > 흠... 1.박스가 모두 옮
📃 문제 설명 >## 2개 이하로 다른 비트 [문제 출처 : 프로그래머스] 👨💻 해결 방법 > 👨💻 소스 코드 >
📃 문제 설명 >## 네트워크 [문제 출처 : 프로그래머스] 👨💻 해결 방법 > 컴퓨터 간의 연결 여부를 파악해서 네트워크의 개수를 구하는 문제.. dfs나 bfs를 이용하여 컴퓨터들을 따라 탐색하면서 네트워크의 개수를 파악하면 되겠다. > dfs와 bfs 이
\[문제 출처 : LeetCode]짝수조부모를 가진 노드의 합을 구하는 문제.애초에 모든 노드를 탐색해야 해서DFS나 BFS로 풀면 되는 문제였다. 난 DFS로 풀었음