목록알고리즘/프로그래머스 (185)
쌓고 쌓다

https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 n이 3일때를 예를 들어보겠다. 0 0 0 0 0 0 0 0 0 피라미드를 위와 같은 NxN 정사각형으로 생각해보자. 1 0 0 2 6 0 3 4 5 위와 같은 모양으로 만들 수 있다. 차례대로 위에서 읽으면 1, 2, 6, 3, 4, 5와 같이 피라미드 순서가 된다. 어떻게 NxN 정사각형인 2차원 배열을 채울 수 있을까? 채우는 방향은 3가지로 나뉜다. 1. 아래로 쭉 내려가기 2...
https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 내 풀이 방법보다 다른 풀이 방법 코드가 깔끔해보여서 두가지 풀이 방법을 소개한다. (1) 내 풀이 스택에는 항상 큰 숫자가 아래에 있고 점점 작은 숫자가 위에 쌓이게 상태를 유지한다. numbers 문자를 하나씩 탐색하며 현재 numbers 문자보다 스택의 top이 작다면 pop을 반복해준다. 그리고 numbers 문자를 무조건 push한다. 이 과정을 numbers 문자 모두를 반복..
https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 내가 박스를 최대로 담을 방법은 메인 벨트에서 꺼낼 수 있다면 꺼내고 서브 벨트에서 꺼낼 수 있다면 꺼내고 메인도 서브도 안된다면 메인것을 서브로 옮겨보고 꺼낼 수 있는지 확인하고 그래도 안된다면 방법이 없는것이다. 순서대로 아래의 로직을 작성했다. 1. 메인 벨트에서 꺼낼 수 있나? 2. 서브벨트에서 꺼낼 수 있나? 3. 메인벨트에서 서브벨트로 옮길 상자가 있다면 옮겨보자 4. 다 ..
https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 큰 수의 범위까지 소수를 구할때 에라토스테네스의 체 알고리즘을 사용한다. https://non-stop.tistory.com/241 numbers의 각 문자로 만들 수 있는 문자열을 다 만들어본다. bruete Force 방식을 사용한다. 이때 visit 배열을 이용해 문자를 붙일지 판단한다. 문자는 str에 붙이고 떼며 수를 만들어 소수인지 확인한다. numbers의 길이가 최대 7이..
https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 사용자 정의 정렬 함수를 등록하여 풀자. 숫자 6과 10이 주어졌을때 두 숫자를 앞 뒤로 순서를 바꿔가며 붙여보고 더 큰 숫자를 만들 수 있는 방법으로 정렬하면 된다. 6과10으로 6 10 = 610, 10 6 = 106을 만들 수 있다. 이때 6이 먼저 오는 방법이 더 큰 수를 만들 수 있음을 이용한다. 테스트케이스 11은 000과 같은 결과가 나왔을때 0으로 반환하는 경우를 고려해야..
https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 아래의 로직을 수행하자. 1. 다리의 트럭들이 한 블럭씩 이동한다. (이때 다리를 모두 건넌 트럭은 pop한다.) 2. 다리에 오를 수 있는 트럭들을 다리에 추가한다. 3. 시간을 +1 해준다. 123 과정을 트럭들이 다리를 모두 건널때까지 반복해주면 된다. 전체 코드 #include #include #include using namespace std; int solution(int b..
https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 롤케이크를 자르는 기준으로 왼쪽과 오른쪽의 상태를 map을 통해 관리할 것이다. map의 키와 값은 형태이다. 먼저 topping 배열에 있는 토핑들을 모두 오른쪽에 존재한다고 생각하고 right_map에 모두 담는다. 이때 존재 여부에따라 연산은 다르다. 이미 존재하는 토핑이라면 +1, 존재하지 않는다면 1로 초기화 시킨다. 그리고 topping 배열을 돌며 left_map에 담는 ..
https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 x를 x+n, x*2, x*3을 통해 y를 DFS로 만드는 것보다 y를 y-n, y/2, y/3 를 통해 x를 만드는 방식이 더욱 효율적이다. 왜냐하면 y를 /2, /3 할 때 딱 나눠 떨어지지 않는 경우를 가지를 칠 수 있기 때문이다. y를 /2 또는 /3으로 나누었을 때 딱 나누어 떨어지지 않으면 x를 x2 x3 하여 y를 만들 수 없기 때문이다. 또한 방문 여부를 통해 순환호출을..