알고리즘/프로그래머스 문제풀이

    [C++] 주식가격(Lv.2)

    [C++] 주식가격(Lv.2)

    문제 풀이 2중 for문을 사용했습니다. 처음 for문은 검사할 시점의 주식가격을 결정하고 두번째 for문에서는 첫번째 for문에서 결정된 가격에비해 하락이 있었나 여부를 판단해서 계산합니다. #include #include using namespace std; vector solution(vector prices) { vector answer; for(int i=0; i

    [C++] 올바른 괄호 (Lv.2)

    [C++] 올바른 괄호 (Lv.2)

    문제 풀이 고려해야할 핵심 내용은 다음과 같습니다. 자신의 작업이 완료되었을때 자기 앞의 모든 일이 완료되어야만 배포 가능하다.( 아니면 대기 ) 저는 이를 다음과 같은 매커니즘으로 풀었습니다. 각 progresses에 for문을 사용해서 해당하는 speeds를 더해줍니다. (for문을 한바퀴 다 돌때마다 day가 하루씩 지난다는 생각) 만약 progresses의 어떤 작업이 100이상이 되었다면 작업이 끝났다는 것인데 이때 해당 작업의 위치의 인덱스가 0일때만 해당 날짜에 배포된 처리를 해줍니다. = 벡터에서 erase해줍니다. for문을 한번 다 돌았을때 배포된 작업의 갯수가 0이 아니라면 aws벡터(reuturn 예정인 벡터)에 push_back해줍니다. 만약 배포된 작업의 갯수가 총 작업의 갯수와..

    [C++] 올바른 괄호 (Lv.2)

    [C++] 올바른 괄호 (Lv.2)

    문제 풀이 괄호 판별은 '스택'을 이용해서 하는것이 보통입니다. 컴파일러 과목을 들어보신 분들은 아마 구현해 본 적이 있을 것 입니다. 매커니즘 '('가 등장하면 스택에 1을 넣습니다. ')'가 등장하면 스택에서 pop을 해줍니다. 만일 스택이 empty상태여서 pop을 할 수가 없으면 false를 return해줍니다. 문자열의 마지막까지 읽었는데 스택이 empty가 아니라면 '('가 상대적으로 많은 상태이기 때문에 false를 return 해줍니다. 문자열의 마지막까지 읽었는데 스택이 empty가 맞다면 정상이므로 true를 return해줍니다. #include #include #include using namespace std; bool solution(string s) { stack st; if(s..

    [C++] 124 나라의 숫자 (Lv.2)

    [C++] 124 나라의 숫자 (Lv.2)

    문제 풀이 이 문제의 규칙?은 일단 기본적으로 n을 3으로 계속해서 나눕니다 ( 몫이 0이 될때까지 ) 그때그때 나오는 나머지가 있을텐데 나머지가 0=>4 1=>1 2=>2 에 대응됩니다. 이 나머지에 대응되는 숫자는 124나라의 숫자에서 가장 오른쪽부터 채워집니다. 여기서 이 규칙을 사용하기 위해서 유의해야 할 것이 있는데, 나머지가 0일때는 몫-1을 해줘야 한다는 것입니다. ex) n==15일때 먼저 n/3을 하면 몫:5 , 나머지:0 그럼 일단 "4"가 채워짐. 근데 이때 나머지가 0이니까 몫-1을해서 4가됨. 4/3을 하면 몫:1 , 나머지:1 그럼 "1"이 추가로 채워져서 "14"가 됨. 1/3을 하면 몫:0 , 나머지:1 그럼 "1"이 추가로 채워져서 "114"가 됨. 이떄 몫이 0이 됐으므로..

    [C++] 멀쩡한 사각형 (Lv.2)

    [C++] 멀쩡한 사각형 (Lv.2)

    문제 (level2, Summer/Winter Coding(2019) 문제 바로가기 풀이(나만의 풀이법, 최대공약수X) 정석적인 풀이는 최대공약수를 이용하는 것인데, 저는 저만의 방식으로 풀었습니다. using namespace std; int check(double x, double y, double a, double b) { if(a*x+b-y다음에 검사할 y좌표값을 -1해주고 다음 열 검사(x좌표값+1)로 넘어감. 아래라면==>y좌표값은 건드리지않고 다음 열 검사(x좌표값+1)로 넘어감. 만약 첫번째 열 검사때 첫번째 빨간색의 position이 0이라면 정사각형 모양이기때문에 y--해주고 다음 열 검사(x좌표값+1)로 넘어갑니다. 만약 첫번째 열 검사때 첫번째 빨간색의 position이 -1이라면 ..

    [C++] 단체사진 찍기 (Lv.2)

    [C++] 단체사진 찍기 (Lv.2)

    문제 (level2, 2017 카카오코드 본선) 문제바로가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 제가 푼 방법은 순열을 통해서 가능한 조합을 모두 뽑는다. 각 순열에 대해서 조건을 만족하는지 검사한다 입니다. - 순열을 얻은 방법: (std::next_permutaion 사용) std::next_permutation 사용법 알아보기 vector v={'A','C','F','J','M','N','R','T'}; int aws=0; 먼저, 순열을 만들기 위해서 알파벳 사전순으로 카카오프렌즈를 벡터에 순서대로 넣어서 초기화해줍니다. aws는 r..

    [C++] 카카오 프렌즈 컬러링북 (Lv.2)

    [C++] 카카오 프렌즈 컬러링북 (Lv.2)

    문제 (level2, 2017 카카오코드 예선) 문제바로가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 BFS,DFS 두 가지 방법으로 풀 수 있는데, 저는 재귀함수를 이용한 DFS를 사용해 풀었습니다. #include using namespace std; int count; int temp_area; int max_area; bool** visited; //해당 칸 검사체크용 int G_m; int G_n; void check(int row,int col,vector& picture) { visited[row][col]=true; temp_ar..

    [C++] 문자열 압축 (Lv.2)

    [C++] 문자열 압축 (Lv.2)

    문제 (level2, 2020 KAKAO BLIND RECRUITMENT) 문제 바로가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 #include #include using namespace std; int solution(string s) { int len=s.length(); int min=len;//리턴값 for(int i=1; i