저번에 풀었는데, 런타임에러나서 질문을 올렸었다.

 

근데 리턴값 안줘서 그런것같다고 그랬다.... 그래서 리턴값 모두 설정해줬더니 됐다.....

그리고 다른사람들이 풀어놓은거 보니깐. 굉장히 sort함수 써서 잘했던데 나는 몰랐다. 

나는 멍청이다. 소팅함수를 구현했다고 보면된다......

#include<iostream>
#include<string>

using namespace std;

string arr[20001];

void initialize(int input) {
	for (int i = 0; i < input; i++) {
		arr[i] = "";
	}
}

void push_back(int start, int end) {
	for (int i = end-1; i >= start; i--) {
		arr[i + 1] = arr[i];
	}
}

bool insert_sort(string input, int num) {
	for (int i = 0; i < num; i++) {
		if (arr[i] == input) {
			return false;
		}
		if (arr[i].length() > input.length()) { //뒤로 미뤄줘야한다.
			push_back(i, num);
			arr[i] = input;
			return true;
		}
		else if (arr[i].length() == input.length()) { //길이가 같다면, 사전순으로 비교
			for (int j = 0; j < input.length(); j++) {
				if (int(arr[i][j]) > int(input[j])) { //입력이 앞설때
					push_back(i, num);
					arr[i] = input;
					return true;
				}
				else if (arr[i][j] < input[j]) {
					break;
				}
			}
		}
	}
	arr[num] = input;
    return true;
}

int main(void) {
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base :: sync_with_stdio(false);
	int T;
	string str;
	cin >> T;
	initialize(T);
	cin >> str;
	arr[0] = str;
	for(int i=1;i<T;i++){
		cin >> str;
		if (insert_sort(str, i) == false) {
			i--;
			T--;
			continue;
		}
	}

	for (int j = 0; j < T; j++) {
		cout << arr[j] << "\n";
	}
    return 0;
}

카페에 왔는데 영어공부하기 시끄러워서 백준 한문제를 풀었다.

문제 링크 : https://www.acmicpc.net/problem/6588

 

6588번: 골드바흐의 추측

문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. 예를 들어 8은 3 + 5로 나타낼 수 있고, 3과 5는 모두 홀수인 소수이다. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23 이다. 이 추측은 아직도 해결되지 않은 문제이다. 백만 이하의 모

www.acmicpc.net

문제가 크게 어렵지는 않았다.

3부터 입력된 숫자까지 돌아가며 찾으면 된다. 

b-a가 가장 큰 값을 찾으라고했는데 그냥 루프 돌다가 찾은게 가장작은 것이기 때문에 찾으면 브레이크하면 끝이다.

지적은 언제나 환영입니다.

#include<iostream>
#include<cmath>

using namespace std;

bool prime_num_discriminator(int input) {
	for (int i = 2; i <= sqrt(input); i++) {
		if (input%i == 0)return false;
	}
	return true;
}

int main(void) {
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base :: sync_with_stdio(false);
	int input = 1;
	int a, b;
	bool suc = false;
	
	while (input) {
		cin >> input;
		for (int i = 1; i < input / 2; i++) {
			a = 2 * i + 1; //홀수
			b = input - a;
			if (prime_num_discriminator(a) and prime_num_discriminator(b)) {
				cout << input << " = " << a << " + " << b << "\n";
				suc = true;
				break;
			}
		}
		if (!suc) cout << "Goldbach's conjecture is wrong\n";
	}
}

문제 링크 : https://www.acmicpc.net/problem/1182 <- 여기

오랜만에 문제를 풀어보았다.

부분 수열의 합인데, 완전탐색으로 할수있다. 하지만 겹치는건 카운팅하면 안된다.

그래서 들어갔던건 빼고 그 뒤에꺼부터 DFS에 넣어주면 된다.

코드를 확인하면 된다.

#include <iostream>

using namespace std;

int arr[20];
int n, s;
int cnt = 0;

void init_arr(int input) {
	for (int i = 0; i < input; i++) {
		arr[i] = 0;
	}
}

void dfs(int sum, int input) {
	
	if (sum == s and input !=0) {
		cnt++;
	}

	if (input == n) return;

	for (int i = input; i < n; i++) {
		dfs(sum + arr[i], i + 1);
	}
}

int main(void) {
	cin >> n >> s;
	init_arr(n);
	

	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}

	dfs(0, 0);
	cout << cnt << endl;
}

여 : 어? 김치찌개 냄비를 담아둔 봉투가 BBQ봉투네? 시그널인가?(순수한 표정을 지으며)

남 : 무슨 시그널? 비비큐 먹고싶다고?

여 : 먹고싶을수도 있지 눈깔을 왜 그렇게 떠?

남 :  엊그제 교촌치킨 먹었자나?

여 : 교촌이랑 비비큐는 다르자나요!!!! 빼에에에에엑!!!!

교촌이랑 비비큐는 같은 치킨이 아니었다고 한다....

오늘밤 주인공은 비비큐~비비큐~~~bbqbbq~

양념반 후라이드반 닭다리만 먹는 우방프린세스....돈많이 벌게...

처음 쓰는 맛집 포스트라 싱숭생숭하다?
그냥 솔직후기 써보겠습니다.

입구입니다. 엘리웨이가 작아서 한바퀴 돌아보니 쉽게 찾을 수 있었습니다. 문은 왼쪽인데 평소에는 장사가 잘되서 밖에 대기 키오스크가 있더라구욜?

Bar에 앉아서 먹는건 오랜만이었는데 제가 가본 텐동집은 다 Bar형식이네욘

저는 스페셜텐동과 대창덮밥을 먹었는데여,
대창덮밥은 맛있었지만 텐동은!! 그냥그랬습니다.

솔직히 제가 텐동 경험이 적은 텐린이라 쉽게 판단할순없지만 평범한 그 맛이었습니다. 그치만 대창덮밥은 맛있습니다. 그리고 깰-끔 합니다!!
가격은 3.1발 정도 사용했습니다.

그래도 맛집이라고 소문난 집이니 한번쯤은 경험해도 좋다고 생각합니다.

다음 텐동은 아주대 네코텐동에 재방문해 리뷰 남길게얀~,~ 안농~~~

테스트케이스 통과한 코드 공유합니더~

지적환영합니다!

vector<string> solution(vector<vector<string>> dataSource, vector<string> tags) {
	vector<string> answer;
	int data_length = dataSource.size();
	int arr[data_length];
	for (int i = 0; i < data_length; i++) {
		arr[i] = 0;
	}

	for (int t = 0; t < tags.size(); t++) {
		for (int i = 0; i < dataSource.size(); i++) {
			for (int j = 1; j < dataSource.size(); j++) {
				if (tags[t] == dataSource[i][j]) {
					arr[i]++;
				}
			}
		}
	}

	for (int j = 0; j < 10; j++) {
		int max = 0;
		int idx;
		for (int i = 0; i < dataSource.size(); i++) {
			if (arr[i] > max) {
				max = arr[i];
				idx = i;
			}
		}//가장 많은 태그 갖고있는 인덱스 구하기
		if (max == 0) break;
		answer.push_back(dataSource[idx][0]);
		arr[idx] = 0;
	}
	return answer;
}

테스트케이스 통과한 코드만 올리겠뜹니다~

트리구조 생각해서 재귀를 사용해서 구현했다.

int solution(string road, int n) {
	int answer = -1;
	int temp = 0;
	int zero_cnt = 0;

	for (int i = 0; i < road.length(); i++) {
		if (road[i] == '0') {
			zero_cnt++;
		}
	}

	if (zero_cnt == 0 or n == 0) {
		int length = 0;
		int max = 0;
		for (int i = 0; i < road.length(); i++) {
			if (road[i] == '1') {
				length++;
			}
			else {
				if (max < length) {
					max = length;
					length = 0;
				}
			}
		}
		if (max < length) {
			max = length;
			length = 0;
		}
		return max;
	}

	for (int i = 0; i < road.length(); i++) {
		if (road[i] == '0') {
			road[i] == '1';
			temp = solution(road, n - 1);
			if (answer < temp) {
				answer = temp;
			}
			road[i] = '0';
		}
	}
	return answer;
}

테스트 케이스만 통과한 코드이지만 기록한다.

난의도는 중간정도 되는것 같다.

int solution(string answer_sheet, vector<string> sheets) {
	int answer = -1;
	int que_num = answer_sheet.length();
	int student_num = sheets.size();
	int max_c_idx = -1;
	for (int i = 0; i < student_num; i++) {
		for (int j = 0; j < student_num; j++) {
			if (i == j) continue;
			//서로 다른학생일때 비교
			int s_cnt = 0; //의심문항
			int len = 0;
			bool be_que = false;
			int max_len = 0;
			int c_idx = 0;

			for (int k = 0; k < que_num; k++) {
				if (sheets[i][k] == sheets[j][k] and sheets[i][k] != answer_sheet[k]) {
					s_cnt++;
					len++;
					if (len > max_len) {
						max_len = len;
					}
				}
				else {
					len = 0;
				}
			}
			c_idx = s_cnt + (max_len*max_len);
			if (c_idx > max_c_idx) {
				max_c_idx = c_idx;
			}
		}
	}
	answer = max_c_idx;

	return answer;
}

경험삼아 본단 마인드로 코딩테스트에 응시했다.

왜냐하면 자소서 안써도 볼수있기 때무니지~~~

테스트 케이스만 통과한 코드인데 이의있다면 답글 부탁합니다~

int solution(string inputString) {
	int answer = 0;
	bool T = false;
	int arr[4] = { 0, 0, 0, 0 };
	for (int i = 0; i < inputString.length(); i++) {
		if (inputString[i] == '(') {
			arr[0]++;
		}
		else if (inputString[i] == '{') {
			arr[1]++;
		}
		else if (inputString[i] == '[') {
			arr[2]++;
		}
		else if (inputString[i] == '<') {
			arr[3]++;
		}
		else if (inputString[i] == ')') {
			if (arr[0] > 0) {
				answer++;
			}
			arr[0]--;
		}
		else if (inputString[i] == '}') {
			if (arr[1] > 0) {
				answer++;
			}
			arr[1]--;
		}
		else if (inputString[i] == ']') {
			if (arr[2] > 0) {
				answer++;
			}
			arr[2]--;
		}
		else if (inputString[i] == '>') {
			if (arr[3] > 0) {
				answer++;
			}
			arr[3]--;
		}

		for (int i = 0; i < 4; i++) {
			if (arr[i] < 0) {
				answer = -1;
				break;
			}
		}
		if (answer == -1) break;
	}
	return answer;
}

여 : (갑자기) 튀김냄새 나지않아?

남 : 난 잘 모르겠는데?

여 : 내가 코가 막히긴했어? BBQ시킬까?

 

정말 모르다가도 알것같은 BBQ....언제나 Korea

+ Recent posts