본문 바로가기

algorithm/프로그래머스

(40)
프로그래머스_타겟 넘버(C++, JAVA) programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr [문제 풀이] DFS를 이용하여 문제를 풀었습니다. 이 문제는 n개의 정수가 입력으로 들어왔을 때 숫자들을 +, -하여 타겟 넘버를 구하는 문제입니다. +, - 연산을 모든 경우에 대해 구해보는 DFS를 이용하여 문제를 해결했습니다. 문제의 로직은 DFS 함수에 (다음 index 번호, 현재 index의 벡터값을 더하고 뺀..
프로그래머스_입국심사(C++) programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr [문제 풀이] 이분탐색을 이용하여 문제를 풀었습니다. 이 문제는 n명의 사람이 입국 심사를 모두 마치는 데 걸리는 최소시간을 구하는 문제입니다. n과 times의 범위가 크기 때문에 완전 탐색으로는 해결이 어려우므로 이분탐색을 이용하여 해결하였습니다. 문제의 로직은 최소시간과 최대시간(가장 오래 걸리는 입국 심사관 * n)의 값의 중간을 찾아 중간시간 안에 몇 명의 심사관이 심..
프로그래머스_문자열 압축(C++) https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr [문제 풀이] 1. 입력된 stinrg을 1의 크기부터 s.size()까지 compression을 돌립니다. 2. 그 후 들어온 크기로 잘라서 비교할 문자열을 temp에 넣습니다 3. 크기만큼 계속 비교하면서 같으면 overlap변수를 증가시켜주고 아니면 result 문자열에 추가하고 temp 문자열을 업데 이트시켜줍니다. 4. 비교하면서 끝인지 아닌지 계..
프로그래머스_카펫(C++, JAVA) https://programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 완전 탐색을 이용하여 문제를 풀었습니다. red로 이루어진 직사각형을 구하기 위해 1 ~ red/2 까지 반복문을 이용해서 구해주었습니다. 그 후 (2 * i) + ((red / i + 2) * 2) == brown 의 조건을 통과하면 i + 2, red / i + 2 을 넣어주었습니다. [C++] #include #include using namespace std; vector solution..
프로그래머스_등굣길(C++, JAVA) https://programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] DP를 이용하여 문제를 풀었습니다. 먼저 이차원 배열을 선언하여 우물을 체크 해주었고 이차원 배열 DP를 이용하여 풀었습니다. (1,1)의 지점에서 (m,n)까지 반복문을 돌며 처음 지점에 올 수 있는 방법은 한 가지인 것을 이용하여 dp[1][0] 을 1로 초기화해주며 다음 길로 올 수 있는 경우는 위에서 오는 것과 옆에서 오는 것을 고려하여 점화식을 짰습니다. 이코드의 핵심은 if (map[..
프로그래머스_숫자 야구(C++) https://programmers.co.kr/learn/courses/30/lessons/42841 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 완전탐색을 이용하여 문제를 풀었습니다. 1~9로 나올 수 있는 세 자리 수 조합 123 ~ 987을 입력으로 들어오는 baseball 벡터의 크기만큼 반복을 하며 추정값을 찾았습니다. 123 ~ 987수를 확인할 때 0이 들어가거나 같은 수가 반복되면 continue 하였고 벡터만큼 반복을 할 때에는 확인하고자 하는 값이 주어진 입력의 스트라이크와 볼 값과 모두 같은지 확인한 후 같으면 값을 증..
프로그래머스_N으로 표현(C++) https://programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] DP를 이용하여 문제를 풀었습니다. set을 선언하여 나올수 있는 경우를 메모제이션을 해주었습니다. 1 ~ 8 까지 반복문을 통해 돌면서 i가 나올 수 n_set[j], n_set[i - j]을 이용하여 사칙연산 계산을 해주었습니다. [코드] #include #include #include using namespace std; set n_set[9]; int solution(int N, int ..
프로그래머스_모의고사(C++, JAVA) https://programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 단순 탐색을 이용하여 문제를 풀었습니다. 세 사람의 패턴을 세 개의 배열에 저장해둔 후 반복을 통하여 문제를 풀었습니다. [C++] #include #include using namespace std; int p1[5] = { 1,2,3,4,5 }; int p2[8] = { 2,1,2,3,2,4,2,5 }; int p3[10] = { 3,3,1,1,2,2,4,4,5,5 }; vector solu..