inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

5-S

5 - S 실전 관련 질문 드립니다..!

해결된 질문

88

자르트

작성한 질문수 59

0

풀긴 했는데 메모리랑 시간 사용량이 어마어마 해서요..

실전이 얼마 안남아서 실전에서도 이렇게 풀어도 되나 싶어서 여쭤봅니다...

 

제가 파악한 큰돌님과 저의 코드 차이점은

저는 연산 기호를 사용할 수 있냐는 기준을

카운팅 배열을 쓰고 원복하고 했던 거랑

수식들을 계산할 때, 스택에 넣고 계산하는 방식을 쓴 게 가장 큰 차이인 것 같습니다.

image.png

그리고 실제 문제로 이런 문제가 나온다면 몇 분 안에 풀어야 될지도 궁금합니다..! 저는 40~50분 안에 풀면 안정권이라 생각했는데 큰돌님 의견이 궁금하네욤!


http://boj.kr/229b1729870841dfa19aaa13c1760073

c++ 코딩-테스트

답변 2

0

큰돌

안녕하세요 자르트님 ㅎㅎ

그리고 실제 문제로 이런 문제가 나온다면 몇 분 안에 풀어야 될지도 궁금합니다..! 저는 40~50분 안에 풀면 안정권이라 생각했는데 큰돌님 의견이 궁금하네욤!

-> 이런 문제는 10분안에 풀어야 합니다. 그러나, 이건 이상적인 것이구요.

코테 시간과 문제수를 보고 전략을 세워야 합니다.

시간이 3시간이 주어지고 5문제 풀어야 한다면 -> 처음 3문제는 1시간안에 푼다 나머지 2문제를 2시간안에 푼다. 이런식으로 대략의 시간제한을 둬서 푸시는게 좋습니다.

 

실전이 얼마 안남아서 실전에서도 이렇게 풀어도 되나 싶어서 여쭤봅니다...

-> 로직의 경우 잘 짜셨습니다. ㅎㅎ 이렇게 짜도 괜찮긴 하죠. 다만 개선할 부분이 있어서 이부분 참고해서 다시 짜는 연습해주세요.

코드리뷰를 드리면 다음과 같습니다.

stack의 사용이 불필요해보입니다. + 연산자 조합함수의 경우 좀 더 최적화시킬 수 있습니다. + call by reference로 받는게 더 좋습니다.

제가 한번 다듬어봤는데요. ㅎㅎ

참고해주세요

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll n, _max = LLONG_MIN, _min = LLONG_MAX;
ll a[14];
ll yunsan[4];  // + - * /
vector<vector<ll>> v;

void combi(vector<ll>& b) {
	if (b.size() == n - 1) {
		v.push_back(b);
		return;
	}
	for (ll i = 0; i < 4; i++) {
		if (yunsan[i] > 0) {
			yunsan[i]--;
			b.push_back(i);
			combi(b);
			b.pop_back();
			yunsan[i]++;
		}
	}
}

ll cal(vector<ll>& oper) {
	ll result = a[0];
	for (ll i = 0; i < oper.size(); i++) {
		if (oper[i] == 0)
			result += a[i + 1];
		else if (oper[i] == 1)
			result -= a[i + 1];
		else if (oper[i] == 2)
			result *= a[i + 1];
		else if (oper[i] == 3)
			result /= a[i + 1];
	}
	return result;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> n;
	for (ll i = 0; i < n; i++) cin >> a[i];
	for (ll i = 0; i < 4; i++) cin >> yunsan[i];

	vector<ll> temp;
	combi(temp);

	for (vector<ll>& b : v) {
		ll value = cal(b);
		_max = max(_max, value);
		_min = min(_min, value);
	}

	cout << _max << '\n';
	cout << _min << '\n';
}

 

이제 곧 코테이신가요? 화이팅입니다 자르트님!! 꼭 뿌셔버리고 오세요

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 자르트님 질문에 대해 답변 드리겠습니다.

질문 주신 내용은 코딩 테스트에서의 문제 해결 전략에 관한 것으로 보입니다. 특히, 메모리와 시간 최적화가 중요한 점에 대해 고민하고 계신 것 같습니다. 코딩 테스트에서 시간과 메모리 사용량은 매우 중요한 부분이기 때문에, 최적화된 코드를 짜는 것이 필요합니다.

큰돌님의 코드와 비교하여 말씀하신 카운팅 배열 및 수식 계산 방법이 메모리와 시간에 영향을 미쳤을 수 있습니다. 카운팅 배열을 사용하는 방법은 간단하고 직관적이지만, 문제의 크기에 따라 메모리 소모가 클 수 있습니다. 반면, 스택을 활용한 계산 방식은 좀 더 효율적일 수 있으나, 구현이 더 복잡할 수 있습니다.

실전 코딩 테스트에서는 일반적으로 문제를 해결하는 데 20~40분을 목표로 하십니다. 그러나, 문제의 난이도에 따라 시간은 달라질 수 있으며, 문제의 정확성과 효율성도 중요하니, 그런 부분도 고려하셔야 합니다. 특히 어려운 문제일 경우에는 40~50분 정도까지도 시간이 걸릴 수 있습니다.

유사한 질문에 대해 더 깊이 있는 설명이나 토론이 이루어진 게시물을 참고하시기 바랍니다:

해당 링크에서 비슷한 접근 방법과 최적화 팁을 확인하실 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

교안 158페이지 문의드립니다

0

10

2

코딩살구클럽 관련 건의사항

0

29

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

13

1

진행 방법 질문드립니다!

0

45

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

55

2

2주차 개념#12 트리 순회

0

26

2

백준사이트가 종료된다고 합니다.

0

286

2

백준 서비스 종료

9

890

1

sk 하이닉스 코테 대비

0

367

2

3-G 최댓값 질문

0

50

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

83

2

3-I 코드 질문드립니다.

0

62

2

3-N 질문 있습니다.

0

66

2

학습방법

0

102

2

4-H 질문 있습니다 (코드 리뷰)

0

66

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

170

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

69

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

64

2

1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.

0

51

2

조합 재귀 풀이 확인 해주시면 감사하겠습니다.

0

68

2

함수별 시간복잡도

0

73

2

3-h 질문입니다.

0

49

1

안녕하세요 선생님. 시간 복잡도 4번 질문있습니다.

0

53

2

1-I 문제 질문 드립니다.

0

76

2