본문 바로가기

알고리즘54

[프로그래머스] 42747번 문제출처: https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr H-Index라는 개념은 처음 봤는데 신기했다. 굳이 저걸 왜 정의할까? 싶었는데 읽어보니 필요할 것 같았다. 인용한 논문 개수 자체와 인용된 논문에서는 그걸 몇 번을 인용했는지... 논문의 생산성, 영향력을 나타내니까. 어떤 과학자가 발표한 논문 N편 중, H번 이상 인용된 논문이 H편 이상이고 나머지 논문이 H번 이.. 2022. 6. 15.
[백준] 1929번 문제출처: https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 소수 구하는 알고리즘 구현은 경험이 있기 때문에 코드를 금세 짰다. 두 수가 주어지는데, 그 두 수를 포함한 숫자 사이의 소수를 모두 출력하는 것이다. for문을 돌려서 소수로 판정나면 그 수를 print해주는 방식을 이용했다. 문제는 시간초과가 일어난다는 점이었다. 머리를 싸매다가 다른 사람들의 제출 코드도 참고하고, 인터넷에서 검색해서 찾아봤다. 이중 반복문 내에서 1과 자신을 제외한 값으로 나누어떨어지지 않는다면.. 2022. 6. 15.
[백준] 2108번 문제출처: https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 주어진 홀수개의 숫자들에 대한 산술평균, 중앙값, 최빈값, 범위를 구하는 것이었다. 다 괜찮은데 최빈값 구하는데서 발목이 잡혔다. 찾아보니 collection 에서 Counter라는 모듈을 사용하면 된다고 한다. most_common을 쓰면 최빈값을 출력할 수 있고, 최빈값은 (해당값, 빈도수) 로 나타난다. 만약 빈도수가 같으면 두 번째로 작은 값을 출력한다. ​ 2022. 6. 15.
[프로그래머스] 12903번 문제출처: https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 단어 s가 주어졌을 때, 단어 길이가 짝수라면 가운데 두 글자를 반환하고 홀수면 가운데 한 글자를 반환한다. 그래서 조건문으로 짝수, 홀수인 경우를 나누어줬다. 홀수이면 가운데 하나만 뽑아주면 되므로 s의 길이+1을 2로 나눈 번째의 알파벳을 출력했다. 다만, 0번째부터 시작이므로 뒤에 -1을 해주는 것도 잊지 .. 2022. 6. 15.
[프로그래머스] 77884번 문제출처: https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr left와 right 라는 두 정수가 주어지면, left와 right를 포함한 그 사이의 모든 수 중에서 그 수의 약수 개수가 짝수면 더하고, 홀수면 뺀다. 약수의 개수를 구하는 알고리즘은 어렵지 않았다. for문을 돌려 1부터 해당 숫자까지 범위로 잡고 나눠서 나머지가 0이면 count + 1 해주.. 2022. 6. 15.
[프로그래머스] 12933번 문제출처: https://programmers.co.kr/learn/courses/30/lessons/12933 코딩테스트 연습 - 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이 programmers.co.kr 정수 n을 받아 각 자리수를 큰 것부터 작은 순으로(내림차순으로) 정렬한다. 문제 파악도 쉽고 엄청 짧은 코드로 쓸 수 있을 것 같았는데, 쓰다보니 꽤 길어졌다. n을 string의 형태로 다시 정의하고 n의 첫번째 숫자부터 하나씩 배열로 받았다. 이후 그 배열을 내림차순으로 정렬하고, 반복문을 만들어 .. 2022. 6. 15.