코딩문제/프로그래머스
-
레벨1 : 달리기 경주(C++)코딩문제/프로그래머스 2023. 9. 14. 01:09
URL : https://school.programmers.co.kr/learn/courses/30/lessons/178871?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 가장 직관적이게 풀수 있는방법이 뭘까 하다가 map, map 버퍼 2개를 생성해놓는다. 1. 순위에 따른 이름찾기용 2. 이름에 따른 순위찾기용 위 2가지를 이용해서 추월하는 플레이어랑 그 앞에 선수의 Rank, Name을 각각 담아두는 임시변수를 선언하고 swap 하는과정을 거쳐줌으로 문제를 해결하였다. 다만 비효율적인 과정이 있었는지 테스트케이스에서 거의 2..
-
2레벨 : 124 나라의 숫자코딩문제/프로그래머스 2020. 7. 20. 20:46
진법 문제를 적용하면 된다. 예를들어 우리가 쓰는 10진법은 10으로 나눈 몫과, 나머지를 통해, 수를 표현하는데, 이 문제의 경우, 1,2,4 의 숫자로 우리가 쓰는 10진법의 수를 표현하는것이기에 3으로 나는 몫과 나머지를 이용하면 문제를 푸는데 어려움이 없다. #include #include #include using namespace std; string solution(int n) { string answer = ""; int tmp; char arr[3] = { '4','1','2' }; while (n > 0) { tmp = n % 3; n = n/3; if (tmp == 0) n--; answer = arr[tmp] + answer; } return answer; }
-
2레벨 : 가장 큰 수코딩문제/프로그래머스 2020. 7. 18. 18:22
현재 내 실력으론 해결법이 떠오르지 않아 인터넷의 솔루션을 참고하였다. 정수를 문자형으로 바꿔서, 처리해야지 까지는 생각하였지만, 모든케이스, 즉 각 숫자 더한 값에 따라 비교를 하나씩 전부다 함으로써, 시간복잡도가 n! 로 나와 시간초과 문제에서 막혀있었다. 이를 효율적으로 하기 위해, 다른사람의 풀이를 본 결과, string vector를 하나 더 만들어서 기존 입력의 vector 인자들을 정렬 한 다음, (정렬시, 각 더한 결과가 더 큰쪽으로 오름차순 정렬되게) 이를 조건에 따라 먼저 나온 문자가 0이면 answer 에 0을 그 외의 경우, 해당 인자를 answer 값에 더해줌으로 원하는 정답을 리턴하는 경우로 해결을 하였다. 아직 실력이 많이 부족함을 깨닫고 좀더 많은 문제를 풀어보고 사고력을 키..
-
1레벨 : 자릿수 더하기코딩문제/프로그래머스 2020. 7. 15. 03:08
문자열 처리를 이용한 해결, to_string 으로 정수를 문자열 변환, 이후 string 배열에 있는 값을 하나씩 분리하면서 문자 0의 아스키 코드값을 빼서 정수값으로 처리 이를 result 변수에 더함으로 답을 구함. #include #include using namespace std; int solution(int n) { string a = to_string(n); int result = 0; for (int i = 0; i < a.size(); i++) { result += a[i] - '0'; } return result; }
-
1레벨 : 제일 작은 수 제거하기코딩문제/프로그래머스 2020. 7. 10. 18:32
stl 에 익숙해지기 위해, algorithm, vector를 사용하여 문제를 풀기로 함. 문제설명에 보이듯, 배열 인수가 하나이면, vector의 pop 을 시키고, -1을 push, 그렇지 않은 경우, 벡터를 하나 더 생성하여, 기존벡터(배열)를 복사한 후, 오름차순 정렬을 시키면, 이 복사한 배열의 0번째 값이 최소값이 된다. 이를 find 함수를 통해 위치를 찾은 후, 인자를 지워주면 된다. #include #include #include using namespace std; vector solution(vector arr) { vector tmp; vector tmp2; tmp = arr; tmp2 = tmp; if (tmp.size() == 1) { tmp.pop_back(); tmp.push..