H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고
문자열을 단위 별로 잘라서 앞과 뒤가 같은지 비교하여 count를 늘려가며 문자열을 붙여주면 된다.첫번째 for문을 이용해 문자열을 자를 단위를 정해준다How : 1부터 (len(문자열) // 2)까지, range는 +1까지Why : 1개부터 문자열 길이의 절반이 되는
처음에는 문제와 그 원리에 대해 이해를 하려고 했는데 잘 안 돼서 못하고 있다가그저, 용어의 정의에 번호로 나와있는 대로 알고리즘을 만들면 되는 거였다...solution(p)에서 if p == "": return p'('와 ')'의 수가 같을 경우, 문자열을 u, v
처음에 set을 이용하여 중복을 제거하여 문제를 풀었는데 그렇게 되면3번 예제의 경우, str1 = 'AA', 'AA', str2 = 'AA', 'AA', 'AA'가 나와(대문자로 통일)교집합 = 'AA', 합집합 = 'AA'가 나오는 문제가 발생한다.그래서 파이썬 내
1\. 입출력 예시인 s와 result의 연관 관계를 알아내야 한다.ex) s: "{{2},{2,1},{2,1,3},{2,1,3,4}}"result: 2, 1, 3, 4※ 위의 숫자들은 총 2는 4개 1은 3개 3은 2개 4는 1개라는 결과에서 얻을 수 있는 것은 숫자
split을 통해 문자열에서 유저 ID와 신고 ID를 구분하여야 한다.ex) a, b = "muzi frodo".split() -> a = "muzi", b = "frodo"주어진 report를 list(set(report)) 작업을 통해서 중복 제거를 한다.유저가 신
P의 조건을 되게 복잡하게 설명해 놨지만 사실상 결론적으론 되게 간단하다.0 사이에 있는 숫자들이 소수인지, 아닌지만 구분하면 되는 것이다.1\. 주어진 n을 k진수로 변경한다.1-1. n을 k로 나누었을 때 나머지를 제일 앞자리에 추가해준다.ex) num = str(
※ 입차와 출차에 따른 요금을 계산하기 위해서는 입차 기록을 저장하는 dictionary와 total 기록을 저장하는 dictionary가 필요하다.1\. 기록 문자열을 공백 단위로 구분하여 번호, 시간, 내역을 구해 시간의 시 단위를 모두 분 단위로 변경해 더해준다.
우선, 이 문제는 bfs를 통해서 답을 찾아내야 한다.라이언이 할 수 있는 경우의 수는 어피치보다 해당 과녁에 많은 화살을 쏴 점수를 얻거나, 0개를 쏴서 해당 과녁의 점수를 얻지 못하거나 둘 중에 하나이다.bfs 함수를 만들어 준다.1-1. deque를 만들어 foc
이 문제는 간단하게 보일 수 있지만 3중 for문을 사용하여 풀면 시간 복잡도가 O(N\*M)이 되어 효율성에서 실패한다.누적합을 사용하여 이를 O(N)으로 줄여야합니다.누적합을 하기 위해 2차원 배열 tmp에 주어진 board의 가로, 세로 칸보다 1칸씩 늘려 선언해
이 문제는 dfs를 통해 양이 가장 많은 경로가 무엇인지 알아내야 한다.방문한 노드를 기록하기 위한 visited 배열 선언dfs 함수 선언2-1. 양의 수가 늑대보다 많을 경우, answer에 양의 수 추가하고, 적은 경우 return2-2. for문을 통해 갈 수
dictionary로 성격 유형에 대한 경우를 모두 0으로 초기화 해준다.choice에 따라 각 dictionary에 값을 더해준다.2-1. choice가 4일 경우, continue2-2. choice가 4보다 클 경우, dictionary문자열 중 뒷문자 += ch
첫 번째 원소를 추출하는 pop과 끝에 원소를 추가하는 insert는 deque의 popleft와 append를 통해 쉽게 구현이 가능하다.deque를 통해 queue1의 합이 클 경우, popleft 하여 queue2로 append, queue2의 합이 클 경우, p
우리는 단순히 주소창에 google.com을 입력해 google 페이지로 이동하지만안에서는 생각보다 복잡한 작업들이 벌어진다.과정을 간단히 요약하자면,사용자가 웹 브라우저를 통해 google.com을 입력하면 URL 주소 중 도메인 네임 부분을 DNS 서버에서 검색한다
이 문제는 heap 자료 구조를 이용한 다익스트라(Dijkstra) 알고리즘을 이용해 푸는 문제이다.heap을 사용하지 않고 구현하면, 매번 최단 거리가 가장 짧은 노드를 선형 탐색해야 하고, 현재 노드와 연결된 노드를 매번 일일이 확인해야 한다.우선순위 큐 기능을 구
DP, 즉 다이나믹 프로그래밍은 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로 특정한 알고리즘이 아닌 하나의 문제 해결 패러다임으로 볼 수 있다.큰 문제를 작은 문제로 쪼개서 그 답을
당첨 번호 개수에 따른 순위를 dictionary에 넣어준다.로또 번호에 0 개수와 맞춘 개수를 카운트 한다.맞춘 개수와 0 개수를 더하면 최고 등수, 맞춘 개수만 하면 최저 등수가 되기에 \[rank맞춘 개수+ 0 개수, rank맞춘 개수]를 return 해준다.
반복문으로 한 번에 회전하는 방법은 없기에 상하좌우 총 4번으로 나눠서 회전을 해야 한다.그런데 문제는 회전하게 되면 줄의 끝 번호는 회전에 의해 사라지게 된다는 것이다.그래서 그 번호를 기억해둬야 한다.좌를 시작으로 반시계 방향(좌 -> 하 -> 우 -> 상 순서)으
공간을 둘 이상 등록한 유저, 즉 count > 1인 유저를 찾으면 되는 것이다.결론적으로, count > 1인 그룹 안에 들어가는 유저를 찾는 쿼리문을 만들어주면 되는 것이다.
나는 이 문제가 Level 3 문제였지만 kakao Level 3 문제에 비하면 크게 어렵지 않다고 생각했다.판매원과 추천인을 기록하는 conn dictionary, 총 이익금을 기록하는 total dictionary를 만든다.Ex 1. conn판매원 = 추천인Ex 2
사실 시키는 그대로 하면 되기 때문에 풀이랄 것도 없는 문제인 것 같다.lower() 함수를 이용해 소문자로 바꾼다.isalpha(), isdigit() 함수를 이용해 숫자와 알파벳이거나 '-' , '\_' , '.' 인 문자들만 남겨준다.'.'일 경우 카운트 하고 아
orders에서 course에 따른 조합을 만들어 count를 하고, max count에 해당하는 조합들을 answer에 append 하면 된다.나는 dfs 방식과 defaultdict 함수를 사용하여 단품메뉴 조합을 구하고, 조합의 count를 구했다.