본문 바로가기

코딩테스트56

[프로그래머스] 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.
[프로그래머스] 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.
[백준] 1010번 문제출처: https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 순열과 조합을 이용하는 문제같았다. 각 테스트 케이스에 대해 다리를 지을 수 있는 경우의 수를 출력하는 것이다. 예제를 확인해보니 순서는 고려하지 않는 것같았다. 그래서 선택 점이 같은 경우의 수는 빼줘야 했다. (중복되지 않도록.) 그래서 반복문을 만들어 순열과 "조합"의 형태를 만들어냈다. 2022. 6. 15.