목록알고리즘/프로그래머스 (183)
쌓고 쌓다
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를 만들 수 없기 때문이다. 또한 방문 여부를 통해 순환호출을..
https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해설 그냥 모든 수를 2진수로 바꾸고 비교하면 해당 문제는 풀리지 않는다~!.ㅠ.ㅠㅠ 1) 주어진 수가 짝수인 경우 주어진 수를 2진수로 표현하면 끝은 항상 0이 된다. 즉 끝의 비트만 1로바꾸면 비트 1개만 바꾸고 주어진 수보다 큰 수를 구할 수 있다. 끝 비트를 1로 바꾸면 수에 +1한 값과 동일하다. 2) 주어진 수가 홀수인 경우 단순히 비트 0인 부분을 1로 바꾸면 한 비트를 바꿔 ..
https://school.programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 가로 N인 길이를 채우기 위해 N-1, N-2, N-3, ... 길이를 채운 상태에서 타일을 채운다고 생각해 보자. 1. N-1 길이 N-1 길이를 채운 상태에서 세로 타일을 하나 설치하면 N 길이의 타일을 채울 수 있다. 2. N-2 길이 N-2 길이 타일을 채운 상태에서 위의 두 방법으로 타일을 채워 N길이를 채울 수 있지만. 세로 타일을 두 개 설치하는것은 이미 N-1 길이 타일에..