posted by REDFORCE 2018. 5. 16. 23:37

어지간하면 깃-클라이언트를 이용하기 때문에 쓸일이 없었으나

이따금씩 에러때문에 커맨드를 써야 할 경우가 있었다.


덕분에 Git command를 쓰려고 했는데, 명령어 자체를 까먹어서 적어둔다.


github에 repository를 먼저 생성

(remote repo에는 .gitignore와 LICENSE가 commit되어있는 상태)


git init

git remote add origin https://github.com/ssaemo/asyncio-irc-client.git

git pull origin master # origin으로부터 local master로 가져옴

git add .

git commit -m "first commit"

git push origin master # origin으로 local master commit을 push

posted by REDFORCE 2017. 12. 15. 22:36

자연수로 이루어진 길이가 같은 수열 A,B가 있습니다. 최솟값 만들기는 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값을 누적하여 더합니다. 이러한 과정을 수열의 길이만큼 반복하여 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.

예를 들어 A = [1, 2] , B = [3, 4] 라면

  1. A에서 1, B에서 4를 뽑아 곱하여 더합니다.
  2. A에서 2, B에서 3을 뽑아 곱하여 더합니다.

수열의 길이만큼 반복하여 최솟값 10을 얻을 수 있으며, 이 10이 최솟값이 됩니다.
수열 A,B가 주어질 때, 최솟값을 반환해주는 getMinSum 함수를 완성하세요.


'Programming > C++' 카테고리의 다른 글

프로그래머스 Level 1.약수의 합  (0) 2017.12.15
알고리즘 문제 예제 4  (0) 2017.12.06
알고리즘 문제 예제 3  (0) 2017.12.06
알고리즘 문제 예제 2  (0) 2017.12.06
알고리즘 문제 예제 1  (0) 2017.12.06
posted by REDFORCE 2017. 12. 15. 22:32

어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다.



'Programming > C++' 카테고리의 다른 글

프로그래머스 Level 2.최솟값 만들기  (0) 2017.12.15
알고리즘 문제 예제 4  (0) 2017.12.06
알고리즘 문제 예제 3  (0) 2017.12.06
알고리즘 문제 예제 2  (0) 2017.12.06
알고리즘 문제 예제 1  (0) 2017.12.06
posted by REDFORCE 2017. 12. 6. 16:16
문제 설명

단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [“ba”, “na”, “n”, “a”]인 경우 "ba", "na", "n", "a" 단어 조각이 각각 무한개씩 있습니다. 이때, 만들어야 하는 문장이 “banana”라면 “ba”, “na”, “n”, “a”의 4개를 사용하여 문장을 완성할 수 있지만, “ba”, “na”, “na”의 3개만을 사용해도 “banana”를 완성할 수 있습니다. 사용 가능한 단어 조각들을 담고 있는 배열 strs와 완성해야 하는 문자열 t가 매개변수로 주어질 때, 주어진 문장을 완성하기 위해 사용해야 하는 단어조각 개수의 최솟값을 return 하도록 solution 함수를 완성해 주세요. 만약 주어진 문장을 완성하는 것이 불가능하면 -1을 return 하세요.

제한사항
  • strs는 사용 가능한 단어 조각들이 들어있는 배열로, 길이는 1 이상 100 이하입니다.
  • strs의 각 원소는 사용 가능한 단어조각들이 중복 없이 들어있습니다.
  • 사용 가능한 단어 조각들은 문자열 형태이며, 모든 단어 조각의 길이는 1 이상 5 이하입니다.
  • t는 완성해야 하는 문자열이며 길이는 1 이상 20,000 이하입니다.
  • 모든 문자열은 알파벳 소문자로만 이루어져 있습니다.

입출력 예
strstresult
["ba","na","n","a"]"banana"3
["app","ap","p","l","e","ple","pp"]"apple"2
["ba","an","nan","ban","n"]"banana"-1
입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
"ap" 1개, "ple" 1개의 총 2개로 "apple"을 만들 수 있으므로 필요한 단어 개수의 최솟값은 2를 return 합니다.

입출력 예 #3
주어진 단어로는 "banana"를 만들 수 없으므로 -1을 return 합니다.


'Programming > C++' 카테고리의 다른 글

프로그래머스 Level 2.최솟값 만들기  (0) 2017.12.15
프로그래머스 Level 1.약수의 합  (0) 2017.12.15
알고리즘 문제 예제 3  (0) 2017.12.06
알고리즘 문제 예제 2  (0) 2017.12.06
알고리즘 문제 예제 1  (0) 2017.12.06
posted by REDFORCE 2017. 12. 6. 16:16
문제 설명

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.

예를 들어, 문자열 S = baabaa 라면

aa baa → bb aa → aa →

의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.

제한사항
  • 문자열의 길이 : 1,000,000이하의 자연수
  • 문자열은 모두 소문자로 이루어져 있습니다.
  • 시간제한 : 28ms

입출력 예
sresult
baabaa1
cdcd0
입출력 예 설명

입출력 예 #1
위의 예시와 같습니다.
입출력 예 #2
문자열이 남아있지만 짝지어 제거할 수 있는 문자열이 더 이상 존재하지 않기 때문에 0을 반환합니다.


'Programming > C++' 카테고리의 다른 글

프로그래머스 Level 1.약수의 합  (0) 2017.12.15
알고리즘 문제 예제 4  (0) 2017.12.06
알고리즘 문제 예제 2  (0) 2017.12.06
알고리즘 문제 예제 1  (0) 2017.12.06
프로그래머스 Level 1.행렬의 덧셈  (0) 2017.12.06
posted by REDFORCE 2017. 12. 6. 16:16
문제 설명

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.)

예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면

  • A에서 첫번째 숫자인 1, B에서 두번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5)
  • A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21)
  • A에서 세번째 숫자인 2, B에서 첫번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 21 + 8(2x4) = 29)

즉, 이 경우가 최소가 되므로 29를 return 합니다.

배열 A, B가 주어질 때 최종적으로 누적된 최솟값을 return 하는 solution 함수를 완성해 주세요.

제한사항
  • 배열 A, B의 크기 : 1000 이하의 자연수
  • 배열 A, B의 원소의 크기 : 1000 이하의 자연수
  • 시간제한 : 5ms
입출력 예
ABanswer
[1, 4, 2][5, 4, 4]13
[1,2][3,4]10
입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
A에서 첫번째 숫자인 1, B에서 두번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 4) 다음, A에서 두번째 숫자인 2, B에서 첫번째 숫자인 3을 뽑아 곱하여 더합니다. (누적된 값 : 4 + 6 = 10)
이 경우가 최소이므로 10을 return 합니다.


'Programming > C++' 카테고리의 다른 글

알고리즘 문제 예제 4  (0) 2017.12.06
알고리즘 문제 예제 3  (0) 2017.12.06
알고리즘 문제 예제 1  (0) 2017.12.06
프로그래머스 Level 1.행렬의 덧셈  (0) 2017.12.06
프로그래머스 Level 1.피보나치 수  (0) 2017.12.05
posted by REDFORCE 2017. 12. 6. 16:16
문제 설명

길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다.
1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.

제한사항
  • 배열의 길이는 10만 이하입니다.
  • 배열의 원소는 10만 이하의 자연수입니다.

입출력 예
arrresult
[4, 1, 3, 2]true
[4, 1, 3]false
입출력 예 설명

입출력 예 #1
입력이 [4, 1, 3, 2]가 주어진 경우, 배열의 길이가 4이므로 배열에는 1부터 4까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3, 2]에는 1부터 4까지의 숫자가 모두 들어 있으므로 true를 반환하면 됩니다.

입출력 예 #2
[4, 1, 3]이 주어진 경우, 배열의 길이가 3이므로 배열에는 1부터 3까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3]에는 2가 없고 4가 있으므로 false를 반환하면 됩니다.


posted by REDFORCE 2017. 12. 6. 14:39

프로그래머스 Level 1.행렬의 덧셈


문제 ----------------------------------------------------------

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.

예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.)

----------------------------------------------------------




posted by REDFORCE 2017. 12. 5. 15:52

최근 여러 곳에 이력서를 넣으면서 프로그래머스를 이용한 온라인 코딩테스트를 제출하는 곳이 여럿 보이길래, 한번 프로그래머스에 나오는 알고리즘 연습 문제들을 풀어보기 시작했습니다.


----------------------------------------------------------


프로그래머스 Level 1.피보나치 수


문제 ----------------------------------------------------------

피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다.

----------------------------------------------------------



재귀함수를 사용하여 간단하게 구할 수 있는 방법이 있지만

시간복잡도가 기하급수적으로 증가하므로


다음과 같이 이전 계산을 기억해두어 계산하는 방법이 있다.




posted by REDFORCE 2017. 10. 9. 22:02

간혹 프로그래밍 기본 문제로 최대공약수와 최소공배수를 구하는 문제가 나옵니다.


이번 글에서는 위 문제에 대한 다양한 해결 방법이 존재하겠지만

유클리드 호제법을 이용하여 해결하는 방법을 적어두겠습니다.



A. 최대공약수


유클리드 호제법은 두 수를 입력받았을 때,


1. 큰 수에서 작은 수를 나눈 나머지를 구한다.

2. (1)에서의 과정에 작은 수를 다시 한번 큰수로 입력, 나머지를 작은 수로 입력하여 (1)의 과정을 계속 반복한다.


3. 나머지가 0이 되면 (2)까지의 과정을 종료한다.

4. 마지막으로 나눈 값이 최대공약수이다.



B. 최소공배수


최소 공배수를 구하는 방법은 위에서 구한 최대 공약수로 처음의 큰 수와 작은 수의 곱을 나누면 된다.


식 : 큰 수 * 작은 수 / 최대 공약수