'카카오' 태그의 글 목록 :: 잡다한 프로그래밍
반응형

 

https://www.acmicpc.net/problem/1068

 

1068번: 트리

첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다. 셋째 줄에는 지울 노드의 번호가 주어진다.

www.acmicpc.net

1. 해결방법

열 단위로 램프가 켜지기 때문에 같은 패턴을 띄어야만 행의 램프가 켜질 수 있다 따라서 1행이 0 1 이라면 나머지 2 3행에서 0 1 패턴이 있는지 찾고 이를 반복적으로 수행하면 된다. 또한 0의 개수가 K보다작은지, K%2 = 0%2인지 비교해주면 된다


2. 코드

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;

int N, M, K;
string ary[51];
int max_value = 0;

int main()
{
	cin >> N >> M;
	for (int i = 0; i < N; i++) {
		cin >> ary[i];
	}
	cin >> K;
	
		for (int j = 0; j < N; j++) {
			int zero_cnt = 0;
			for (int k = 0; k < M; k++) {
				if (ary[j][k] == '0') {
					zero_cnt++;
				}
			}
			int cnt = 0;
			if (zero_cnt <= K && zero_cnt % 2 == K % 2) {
				for (int m = 0; m < N; m++) {
					if (ary[j] == ary[m]) {
						cnt++;
					}
				}
			}
			max_value = max(max_value, cnt);
		}
		cout << max_value;
}
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

[백준] #1197 램프  (0) 2020.05.08
[백준] #1012 유기농 배추  (0) 2020.04.06
[백준] #1068 트리  (0) 2020.03.29
반응형

https://programmers.co.kr/learn/challenges?tab=all_challenges

 

프로그래밍 강의 | 프로그래머스

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

1. 해결방법

stack을 활용하여 올바른 괄호 문자열인지 확인하고, 나머지는 문제에서 제시한 방법대로 재귀함수를 진행한다


2. 코드

#include <string>
#include <string.h>
#include <vector>
#include <stack>
#include <iostream>
using namespace std;
    string answer = "";

bool check(string p){
    stack<char> st;
    for(int i = 0; i < p.length(); i++){
        if(!st.empty() && p[i] == ')'){
            if(st.top() == '(') {
                st.pop();
            }else {st.push(p[i]);} 
        }else {st.push(p[i]);}
    }

    if(st.empty()) return 1;
    else return 0;
}

string check_function(string p){
    if(p == "") return "";
    string u = "";
    string v = "";
    int left = 0;
    int right = 0;
    
    if(check(p)) {return p;}
    else{
        for(int i = 0; i < p.length(); i++){
            if(p[i] == '(') left++;
            else right++;
            if(left == right) {
                u = p.substr(0,left+right);
                v = p.substr(left+right, p.length());
                
                if(check(u)){ 
                    return u + check_function(v);
                }else{
                    string temp;
                    temp += "(";
                    temp += check_function(v);
                    temp += ")";
                    string temp2 = u.substr(1, u.length()-2);
                    for(int j = 0; j < temp2.length(); j++){
                        if(temp2[j] == '(') temp += ")";
                        else temp += "(";
                    }
                    return temp;
                }
                
            }
            
        }
    }
}

string solution(string p) {
    if(p == "") return "";
    answer = check_function(p);
    return answer;
}
반응형
반응형

 

https://programmers.co.kr/learn/challenges?tab=all_challenges

 

프로그래밍 강의 | 프로그래머스

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

1. 해결방법

문제에서 제시한 개수만큼 글자를 자르고 이전과 다음으로 저장하여 비교하는 방식을 사용하였다.


2. 코드

#include <iostream>
#include <string>
#include <vector>

using namespace std;
int answer = 9999;
void check(int num, string s){
    int mok;
    if(s.length() % num == 0) mok = s.length() / num;
    else mok = s.length() / num + 1;
    string result = "";
    int check = 1;
    string pre; string next;
    for(int i = 0; i < mok-1; i++){
        pre = s.substr(i*num, num);
        next = s.substr((i+1) * num , num);
        
        if(pre == next) check++;
        else{
            if(check != 1) result += to_string(check) + pre;
            else result += pre;
            check = 1;
        }
    }
    if(check == 1) result += next;
    else result += to_string(check) + pre;
    if(result.length() < answer) answer = result.length();
    
}

int solution(string s) {
                answer = 9999;

    for(int i = 1; i <= s.length()-1; i++){
        check(i, s);
    }
    if(s.length() == 1) answer = 1;
        return answer;
}
반응형

+ Recent posts