Algorithm(38)
-
[프로그래머스] 숫자의 표현 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 연속하는 자연수들의 합이 n이 되는 경우의 수를 세어주는 문제이다. 문제에서 주어진 예제처럼 n이 15로 주어지면 위와 같이 표현된 경우의 수인 4를 리턴해야 한다. 나의 풀이 전략 자연수의 합(등차수열의 합)을 이용하여 푼다. 상세 1. 연속된 자연수의 첫번째 수를 i, 마지막 수를 j라고 하자. (i ≤ j) 그럼 다음과 같이 표현할 수 있을 것이다. 이제 위, 아래의 식을 각각 좌변과 우변끼리 더하면 다음과 같다. 우변의 (i + j) 항이 몇 개가 있을까? 바로 (j - i + 1)개 만큼 있다...
2022.12.23 -
[프로그래머스] 크레인 인형 뽑기 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 크레인의 위치가 주어지면 board 안에 있는 인형을 바구니로 옮겨담아서 바구니 안에 연속으로 같은 인형이 담기면 갯수를 더하는 문제였다. 나의 풀이 전략 1. 크레인의 위치에 따라 인형을 뽑고 바구니에 옮겨담는 PickandDrop()이란 함수를 만들었다. PickandDrop()에서 인형의 갯수도 세어나갈 것이다. 2. solution()에 인수로 주어진 moves를 따라 PickandDrop()을 실행한다. 상세 1. PickandDrop()은 인형의 나열정보(board)와 크레인의 위치(move)..
2022.12.22 -
자주 쓰이는 알고리즘 모음 - 문자열 편
※ 작성기준은 C/C++입니다. 문자열 나누기 vector split(string in, char del) { vector answer; in.push_back(del); // for last push back string store; for(char ch : in) { if(ch == del) { if(store.size() > 0) { answer.push_back(store); store.clear(); } } else store.push_back(ch); } return answer; }
2022.11.02 -
자주 쓰이는 알고리즘 모음 - 수학 편
※ 작성기준은 C/C++입니다. 10진수 n의 k진수 구하기 string get_K_number(int n, int k) { string answer = ""; while(n) { answer.push_back(n%k + '0'); n /= k; } reverse(answer.begin(), answer.end()); return answer; } 소수 판별하기 방법 1) 배열에 기록해두는 방법 bool numbers[1000] = {true,}; // 모두 true로 초기화 numbers[0] = false; numbers[1] = false; for (int i = 2; i
2022.11.02 -
[백준] 3987 | 보이저 1호 | C++
Signal이란 객체를 만들어 풀었다. Signal은 방향, 움직임수, 행, 열으로 구성되어 있다. (방향 U, R, D, L는 각각 0, 1, 2, 3으로 치환해서 풀었다.) 가장 중요시 봐야할 점은, 바로 재방문 했을 때를 잘 구분해야한다. 거울에 도달했을 때 진정 재방문인지를 잘 생각해야한다. 2차원으로 생각하다보면 이는 방향이 엇갈릴 때도 재방문으로 잘못 여길 수 있다. (예제 입력 2를 생각해보면 이해가 될 것이다.) 때문에 나는 visited라는 배열을 3차원으로 정의했다. (visited[시그널의 방향][시그널 row][시그널 column]) 처음 그 궤도로 진입했을 때의 시그널의 방향과 어쩌다가 무한궤도로 시그널이 들어왔을 때의 방향은 다를 수 있기 때문이다. 이를 3차원 배열 visite..
2022.10.14 -
[백준] 2146 | 다리 만들기 | C++
풀이의 핵심은 이렇다. int mem[][]에 섬의 번호 작성 int vis[][]에 다른 섬까지의 거리 작성 set S[]로 출발섬의 끝 좌표 수집 1. DFS로 섬들의 번호를 매긴다, 끝 좌표들도 모아준다. DFS(좌표, 번호): mem[좌표]
2022.09.22