인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

mayong0707님의 프로필 이미지

작성한 질문수

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

1-L

1-k, cout.tie() 틀

해결된 질문

작성

·

44

0

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

string s, ret;
char mid;
int cnt[200], flag;

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

	cin >> s;
	for (char c : s) cnt[c]++;
	
	for (int i = 'Z'; i >= 'A'; --i)
	{
		if (cnt[i] & 1) 
		{
			flag++;
			mid = char(i);
			cnt[i]--;
		}
		if (flag == 2) break;
		for (int j = 0; j < cnt[i]; j += 2)
		{
			ret = char(i) + ret;
			ret += char(i);
		}
	}

	if (mid) ret.insert(ret.begin() + ret.size() / 2, mid);
	if (flag == 2) cout << "I'm Sorry Hansoo\n";
	else cout << ret << "\n";
	return 0;
}

 

강사님의 코드와 동일한데 최적화를 위해 cout.tie(NULL)이 추가된 코드입니다. ""cout"이 모호합니다."라는 오류가 뜨지만, 출력은 잘 진행됩니다. 문제는 백준에서는 틀림처리가 생기는데 왜 그런건가요? 알고리즘 교안에서는 scanf나 printf를 사용하지 않으면 괜찮다고 나와있는데 추가적으로 더 알아야할 것들이 있는건가요?

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

문제는 백준에서는 틀림처리가 생기는데 왜 그런건가요?

->

원래 코드는 맞는데

cout.tie를 추가하면 틀렸다라고 뜨시나요?

틀린코드 및 맞는코드 두개 링크 부탁드립니다.

 

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, mayong0707님. 인프런 AI 인턴입니다.

코드에 대한 질문을 주셔서 감사드립니다. 말씀하신 문제는 입력 출력 최적화 관련 설정을 했는데도 불구하고 백준에서 틀린 답이라고 뜨는 상황으로, 이는 최적화와는 무관할 수 있습니다. 오류를 해결하기 위해서 몇 가지 포인트를 점검해보겠습니다:

  1. 문제 조건 상의 오류: 백준에서 문제가 어떤 상황에서 틀린다고 판단하는지 오류 메시지를 확인하는 것이 중요합니다. 문제에 주어진 모든 조건을 반영했는지 다시 한번 검토해주세요.

  2. 입력 문자열 검사: 문제에서 규정한 대로 입력 문자열이 주어지는지 확인해보세요. 모든 문자가 주어진 범위 내에 있고, 대소문자 구분을 올바르게 처리하고 있는지요.

  3. 팰린드롬 생성 로직: 팰린드롬을 생성하는 로직에서 모든 경우를 제대로 처리하고 있는지 확인해야 합니다. 특히 홀수 갯수의 문자가 여러 개인 경우에 “I’m Sorry Hansoo”라는 메시지를 출력해야 하는 논리 구조가 제대로 적용되었습니다.

  4. 디버깅: 로직의 각 단계가 기대한 대로 작동하는지 확인해 보면, 어디서 문제가 발생하고 있는지를 더 잘 파악할 수 있을 것입니다. 각 단계마다 디버그 출력으로 데이터를 확인해 보세요.

  5. 최적화 불일치: 코드 측면에서 ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);는 입출력 성능을 높이기 위한 설정입니다. 이 최적화가 원인이라기 보다는 알고리즘의 논리적인 부분을 다시 확인하는 것이 중요합니다.

유사한 사례에 대한 질문들이 이미 존재합니다. 참고할 만한 관련 질문과 답변 링크를 제공드리겠습니다:
- 백준 1213번 질문입니다!
- 안녕하세요. 1-K 문제 질문드립니다..!

위 링크들을 참고하시어 문제의 논리적 오류가 있는지를 재확인해보시기를 권장드립니다. 알고리즘의 특성상 디테일을 놓칠 수 있는 부분이 존재하므로, 로직의 세심한 검토가 필요할 수 있습니다.

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