본문 바로가기

알고리즘69

[프로그래머스 Programmers] 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작.. 2023. 12. 13.
지구 종말에 대한 하노이 예언 만약, 지구에 종말이 온다면 남은 시간 동안 무엇을 할까? 다음은 베트남의 수도 하노이의 불교 사원에서 전해 내려오는 지구 종말에 대한 '하노이 탑' 예언이다. 고대 인도 베나레스(지금의 바라나시)의 한 사원에는 작은 구멍이 뚫린 64개의 순금 원판과 3개의 다이아몬드 기둥이 보관되어 있다고 한다. 이들 원판은 어느 것도 크기가 같지 않으며, 작은 원판이 큰 원판 위에 올라오도록 차례대로 1개의 기둥에 모두 쌓여 있다. 이 사원에서 유래되는 전설에 의하면, 수도승에게 64개의 원판을 하나씩 옮겨서 다른 기둥에 원해 상태로 부지런히 옮겨 놓으라고 명한다. (단, 원판의 이동시 작은 원판 위에 큰 원판은 올려놓을 수 없다.) 그리고 모든 원판이 다른 기둥으로 모두 옮겨질 때, 사원과 승려 그리고 지구상의 모.. 2023. 12. 12.
[프로그래머스 Programmers] 정수를 나선형으로 배치하기 문제 설명 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 제한 사항 1 ≤ n ≤ 30 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 풀이한 방법은 4 x 4의 배열은 1에서부터 12까지의 외곽선을 가진 2 x 2의 배열로 접근하였다. 5 x 5의 배열은 1에서부터 16까지의 외곽선을 가진 3 x 3의 배열이다. 이를 무한히 확장시켜 나간다. 풀이 코드 using System; public cla.. 2023. 12. 11.
[프로그래머스 Programmers] 수 조작하기 문제 설명 정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다. "w" : 수에 1을 더한다. "s" : 수에 1을 뺀다. "d" : 수에 10을 더한다. "a" : 수에 10을 뺀다. 그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다. 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요. 제한 사항 2 ≤ numLog의 길이 ≤ 100,000 -100,000 ≤ numLog.. 2023. 12. 5.
O(N) vs O(2N)은 동일한 시간 복잡도를 갖는다. O(N) vs O(2N)은 동일한 시간 복잡도를 갖는다. 결론부터 이야기하자면 O(N)과 O(2N)는 동일하다. O(N)과 O(2N)이 서로 혼동되어 다르다고 생각한다면 '입력 크기에 따라 런타임이 얼마나 빠르게 증가하는가'가 아니라 '작업 횟수'에 초점을 맞추고 있기 때문이다. 시간 복잡도는 수행시간이 아니다. 아래의 그래프를 보면서 확인해 보자 두 경우 모두 'No Of Operations'가 입력 크기에 따라 그래프가 선형적으로 증가하는 것을 볼 수 있다. 실질적으로 O(N)은 O(2N) 보다 실행 시간이 짧지만 이는 중요하지 않다. N 값이 증가하면 O(N)이 성장을 지배하게 되고 계수 2는 중요하지 않게 된다. 따라서 N의 값이 매우 커지면 둘의 실행 시간이 동일해질 것이다. 예를 들어보자 T(.. 2023. 12. 5.
[프로그래머스 Programmers] 길이에 따른 연산 문제 설명 정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요. 제한 사항 2 ≤ num_list의 길이 ≤ 20 1 ≤ num_list의 원소 ≤ 9 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 코드 using System; using System.Linq; public class Solution { public int solution(int[] num_list) { int answer = 0; if .. 2023. 12. 4.