본문 바로가기
반응형

프로그래밍504

[프로그래머스 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.
O(log n) 시간 복잡도란 무엇인가? 시간 복잡도란 무엇인가? 시간 복잡도는 입력(n)을 기반으로 알고리즘이 실행(O)되는 데 걸리는 시간을 설명한다. 시간 복잡도는 꽤나 직관적이다. 예를 들어서 O(1)의 시간 복잡도를 가지는 알고리즘이 있다면 이는 입력에 상관없이 실행하는데 항상 동일한 양의 시간이 걸린다. O(n)의 시간 복잡도를 가지는 알고리즘이라면 입력값이 커지면 커질수록 시간도 그에 맞춰서 일정한 속도(선형 진행)로 커진다는 것을 의미한다. O(n^2)의 시간 복잡도를 가지는 알고리즘이라면 입력값이 커지면 커질수록 걸리는 시간이 기하급수적으로 증가할 것이다. 빅-오(Big-O) 표기법 알고리즘에서 중요한 속성 정확성 : 주어진 입력을 모두 처리하며 올바르게 출력해야 한다. 효율성 : 문제를 효율적으로 해결해야 한다. - 시간 복잡.. 2023. 12. 1.
로그(log)란 무엇인가? 지수(exponent)란 무엇인가? 위에 표시된 숫자들을 우리는 2의 3승, 혹은 5의 세제곱 등과 같이 읽는다. 요새는 몇 제곱과 같이 표현을 하겠지만, 예전에는 몇 승(升)이라고 표현했다. 몇 승이라는 표현도, 위에 숫자가 알라탄 것과 같은 모습이기에 나름 비슷한 이미지를 주는 것 같긴 하다. 이와 같은 승수, 제곱으로 표현되는 수를 지수(exponent)라고 한다. 지수와 지수의 밑은 아래와 같다. 오른쪽 위의 작은 숫자를 지수(exponent)라고 부르고 지수 밑에 있는 큰 숫자를 밑이라고 부른다. 이 예제에서는 4가 밑(base)이고 3이 지수(exponent)이다. 아래의 수는 밑이 7이고 지수가 5인 수이다. 지수는 밑수를 몇 번 곱해야 하는지 나타내는 수이다. 이 예제에서 4^3은 밑인 4.. 2023. 11. 30.
디자인 패턴이란? 디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책이다. 이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진 청사진(Blueprint)과 비슷하다. 표준화된 라이브러리들이나 함수들을 코드에 복사해 사용하는 것처럼 패턴들을 붙여 넣기 식으로 사용할 수는 없다. 패턴은 재사용할 수 있는 코드의 조각이 아니라 특정 문제를 해결하는 방식을 알려주는 일반적인 개념이다. 당신은 패턴의 세부 개념들을 적용하여 당신의 프로그램에 맞는 해결책을 구현할 수 있다. 패턴은 알고리즘과 자주 혼동이 되곤 한다. 왜냐하면 두 개념 모두 알려진 문제에 대한 일반적인 해결책을 설명하기 때문이다. 알고리즘은 어떤 목표를 달성하기 위해 따라야 할 명확한 일련의 절차를 .. 2023. 11. 29.