본문 바로가기

일반 학습69

[프로그래머스] 삼각 달팽이 처리 조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/68645 풀이 달팽이가 위에서부터 도는 모양을 생각해보자 위에서부터 n만큼 내려가고 n-1만큼 오른쪽으로가고 n-2만큼 위로 다시 올라가며 빙글빙글 돌게된다. 반복없이 여기까지만 구해본다면 맨위부터 n만큼 배열을 만들어 내부에서 일치하는 인덱스에 값을 담아줘야한다. count는 들어갈 숫자로 0부터 시작하게되며 x=-1 y=0으로 왼쪽부터 대각선으로 내려가는 for문을 돌린다. 0부터 4전까지 x축을올리며 count를 올리며 할당해준다. 맨아래에서 오른쪽으로 가는 for문을 돌린다. n-1인 0부터 3전까지 돌리게 되며 x는 그대로두고 y축을 +1해주면서 count++를 하며 값을 저장시킨다. .. 2022. 3. 25.
[프로그래머스] 피로도 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/87946 풀이 처음에는 가장 높은 피로도를 사용하는 던전순으로 sort하여 돌 수 있는 던전수를 계산하려고 했으나 던전마다 필요한 피로도가 있으므로 높은 피로도부터 던전을 도는것이 가장 많은 던전을 돌 수 있다고는 보장할 수 없다. 그래서 모든 던전을 도는 경우의 수를 구하고 가장 많은 깊이만큼 들어간 count를 반환해야할 것이다. 결국 순열과 조합을 써야한다. 순열과 조합에서는 현재 조합 할 요소가 사용중인지 아닌지를 체크하는 배열을 따로 만들어야하며 시작할 깊이가 있어야한다. 나는 던전의 수만큼 check 배열을 만들어서 false로 채웠고 dfs함수를 만들어서 깊이0부터 시작해서 던전의 수.. 2022. 3. 25.
[프로그래머스] 큰 수 만들기 처리조건 더보기 https://programmers.co.kr/questions/27691 풀이 number로 들어온 값을 인덱스0부터 돌면서 뒤에있는 숫자와 비교해 크다면 건드리지 않고 작다면 제거해나가야하며 제거이후에 다시 앞에 있는 숫자까지 검사해주어야한다. 아래를 확인해보자 k갯수만큼 제거되면 이제 남은 문자열을 돌려주어야 할 것이다. 문자열 하나하나 일단 for문으로 돌리기시작한다. 사전에 제거된 양을 변수로 잡고 제거될 때마다 ++하여 k만큼 제거되면 종료시킬 준비를 해준다. 정답을 쌓을 stack을 만들고 기본 로직은 인덱스를 순회할 때마다 숫자를 하나씩 푸시한다. 만약 stack에 마지막에 쌓인 값이 현재 for문의 인덱스에 해당하는 값보다 작다면 안되는 것이다 그래서 작다면 stack맨 .. 2022. 3. 24.
[프로그래머스] 카펫 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/42842 풀이 테스트 케이스의 brown과 yellow에 의한 return 값을 자세히 보자. b와 y의 합은 return 값을 곱한게 된다. b+y의 약수를 구해보면 10,2에서 합은 12가 되고 [1,12], [2,6], [3,4] 가 된다. 순서대로 나열하면 1,2,3,4,6,12가 된다. 각 1,2,3중 가장 큰수인 3이 return 값의 y축이 되며 b+y를 y축으로 나누면 x축을 구할 수 있다. sqrt를 사용해 for문을 최소한으로 돌리는 약수 찾기 함수를 생성하여 b+y를 인자로 전달한 뒤 1,2,3을 담아 내림차순으로 정렬하여 리턴해주게 된다. 받은 1,2,3을 for문으로 다시 .. 2022. 3. 24.
[프로그래머스] H-Index 처리조건 더보기 https://programmers.co.kr/questions/26797 풀이 문제가 잘 이해되지 않았다. 테스트 입출력도 1개뿐이다.. [3, 0, 6, 1, 5] 배열에 각 숫자들은 인용한 횟수이며 총 5개의 논문을 냈고 각 논문당 인용횟수를 나타낸다. 이 배열의 리턴값은 3이다. 각 논문당 인용횟수보다 큰 인용 횟수를 가진 논문이 있다면 갯수를 세어 자기 자신의 갯수를 더하여 A를 만들고 이 A가 자신의 인용횟수보다 크다면 자신의 인용 횟수가 최대값이 되고, 만약 작다면 A가 최대값이 되는 것이다. 그렇게 각 논문에서 나오는 결과의 최대값을 리턴해주면 된다. 쉽게 생각하면 "h번 이상 인용된 h개의 논문이 있으면 이때의 h를 리턴하면 됩니다. 3번 이상 인용된 논문이 4개 있으면 .. 2022. 3. 24.
[프로그래머스] 다리를 지나는 트럭 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/42583 풀이 처리조건을 자세히봐야한다 bridge_length는 다리길이로 이 트럭은 1초에 1length만큼 움직이게 되며 weight는 다리위에 올라가 있는 트럭 자신의 무게들의 합보다 낮아야한다. 또한 truck_weight는 배열 순서대로 다리에 올라가게 된다. 트럭이 담긴 배열을 waitTruck으로 할당하고 모든 트럭이 다 지내가야끝나므로 while문을 우선 돌린다. while문 내부에서 시작시 time을 1올리고 1초가 지날 때마다 트럭이 담긴 waitTruck에서 트럭을 빼서 다리에 올려야 하므로 for문을 길이만큼 돌린다. 현재 다리가 견딜 수 있는 무게는 nowWeight로 할.. 2022. 3. 23.