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

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

mayong0707님의 프로필 이미지
mayong0707

작성한 질문수

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

1-L

1-k, cout.tie() 틀

해결된 질문

작성

·

17

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

안녕하세요, 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 문제 질문드립니다..!

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

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

mayong0707님의 프로필 이미지
mayong0707

작성한 질문수

질문하기