알고리즘 문제147 [알고리즘문제] 프로그래머스 - 최대값과 최솟값 문자열에서 최솟값과 최대값을 구하는 문제이다. java는 split메소드가 있는데 c++에는 없다...그게 좀 아쉽다. 어쨋든 문자열에서 각 정수의 구분은 ' '로 하기 때문에 ' '을 만나기 전까지 문자를 이어 붙인 다음에 ' '을 만나면 vector에 넣는다. 마지막에는 ' '가 없기 때문에 임의로 넣어준다. 이 문제를 처음 풀때는 좀 노가다로 했는데, stoi("-3")이 -3이 되는 줄 몰랐다. 알앗으면 빨리 풀었을 텐데.... #include #include #include using namespace std; string solution(string s) { string answer = ""; string temp=""; vector v; for(char c : s){ if(c== ' '){ .. 2020. 1. 6. [알고리즘문제] 프로그래머스 - 숫자의 표현 예전에 코테에서 이런 비슷한 문제가 나왔었는데, 당시 멘붕(?)시기여서 못풀었었다. 아마 지금 풀라고 하면 잘 풀 수 있을 것 같다. 문제는 간단하다, 자연수 n을 연속된 숫자로 표현할 수 있는 개수를 찾는 문제이다(연산은 +만 사용한다) 예를 들어 15는 1+2+3+4+5, 4+5+6, 7+8, 15로 표현할 수 있다. 이 문제는 두가지 방법으로 풀어봤다. 사실 처음에 재귀로 풀었었는데, 효율성 테스트에서 걸려가지고 다른 방법으로 풀었는데 나중에 같은 코드로 다시 채점을 하니 통과가 되었다... 1. 재귀 #include #include #include using namespace std; int count = 0; int sum = 0; void recur(int max, int current){ s.. 2020. 1. 6. [알고리즘문제] 프로그래머스 - 다음 큰 숫자 처음이 문제를 n을 2진수로 표현했을 때 1을 더하는 문제인 줄 알았다. 그래서, 올림을 어떻게 구현할 것인가 하고 고민을 했는데, 예제를 보니 내가 잘못이해하고 있다는 것을 그때 알았다. 문제는n 숫자가 있을 때 n보다 크면서 2진수로 표현했을 때 1의 개수가 같은 숫자를 구하는 문제이다. 예를 들어 15의 경우 2진수로 표현하면 (1111), 1이 4개이고 15보다 큰 숫자중에 2진수로 표현했을 때 1의 개수가 4개인 숫자는 23(10111)이다. 이때 23을 return 하면 된다. 문제를 보자마자 시프트 연산과 비트연산자(&)를 사용했다. n을 오른쪽으로 0,1,2,3,4....19씩 이동하면서 1과 논리연산자를 했을 때 1의 개수를 체크해준다. 1001110 1 -> 0 0100111 1 -> .. 2020. 1. 4. [알고리즘문제] 프로그래머스 - 카펫 각각의 brown, red격자가 주어질 때, 만들 수 있는 카펫의 가로/세로 길이는 구하는 문제 입니다. 여기서 만들 수 있는 카펫이란 red의 격자가 중앙에 위치해 있는 경우이다. 사실 이 문제에 대한 설명이 조금 부족하다고 생각한다. 문제에서 "중앙"의 의미를 좀 더 구체적으로 예시를 들어 설명해주었으면 좋았을 것 같다는 생각이 들었다. 아무튼 나는 위의 사진처럼 좌/우의 gap이 같고, 상/하의 gap이 같은 경우를 중앙으로 생각하고 문제를 풀었다. 처음에 문제를 어떻게 풀 까 고민을 했었는데, 만들 수 있는 모든 red격자 모양을 만들면서 상/하/좌/우로 red격자를 덮었을 때 그 크기ㅏ brown보다 작거나 같은 경우를 찾았다. 예를 들어, 입출력 예제3의 경우 red격자의 개수가 24개 이니깐.. 2020. 1. 3. 이전 1 ··· 16 17 18 19 20 21 22 ··· 37 다음