/images/logo.png

[프로그래머스]다리를 지나는 트럭

https://programmers.co.kr 문제: 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다.

[프로그래머스]스킬트리

https://programmers.co.kr 문제: 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다.

[프로그래머스]자연수 뒤집어 배열로 만들기

https://programmers.co.kr 풀이: 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열을 리턴한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h>#include <stdbool.h>#include <stdlib.h> int* solution(long long n) { // 리턴할 값은 메모리를 동적 할당해주세요. int* answer = (int*)malloc(sizeof(int)*12 + 1); int c = 0; while (n) { answer[c] = n % 10; n /= 10; c++; } return answer; }

[프로그래머스]이상한 문자 만들기

https://programmers.co.kr 문제: 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 풀이: 문자열 전체의 짝/홀수 인덱스가 아니라 각 단어 기준이므로 주의한다. 공백문자가 하나가 아닐 수도 있으므로 주의한다. 공백문자를 기준으로 단어를 나누므로, 공백문자가 나왔을 경우 카운트를 초기화하는 식으로 문자열을 나눈다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <string>#include <vector> using namespace std; string solution(string s) { int c = 0; for (int i = 0;i < s.

[프로그래머스]두 정수 사이의 합

https://programmers.co.kr 풀이: 두 수 a, b 사이에 속한 모든 정수의 합을 리턴한다. a와 b는 -10,000,000 이상 10,000,000 이하인 정수 이므로 주의한다. a와 b의 대소관계가 정해져 있지 않으므로 절댓값을 이용한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 #include <stdio.h>#include <stdbool.h>#include <stdlib.h> long long solution(int a, int b) { long long answer = ((long)a + (long)b) * (abs((long)b - (long)a) + 1) / 2; return answer; }