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

김민우님의 프로필 이미지

작성한 질문수

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

1-D

틀린이유를 모르겠습니다.

작성

·

347

0

http://boj.kr/bb56fb4c3cc74a02bd1b68932deaec81

제가 작성한 코드이고 선생님의 코드와 유사하게 reverse함수를 이용하여 바꾼 문자열을 for문을 통해 돌며 원본의 문자열과 비교하여 같으면 ret에 1을 저장하여 출력 그렇지 않으면 0을 저장하여 출력하게 작성하였습니다.

답변 3

0

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

아마 중괄호를 안하신게 아닌가 싶습니다.

한개 로직이 아닌이상 중괄호를 쓰시는게 좋습니다.

이렇게 해보시겠어요?

#include<iostream>
#include<algorithm>//reverse 사용을 위한 헤더추가 
using namespace std;
string s;
int ret;
int main() {
	cin >> s;
	string os = s;
	reverse(s.begin(), s.end());
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == os[i])
			ret = 1;
		else{
		    ret = 0;
                    break;
        } 
	}
	cout << ret;
	return 0;
}

0

김민우님의 프로필 이미지
김민우
질문자

break;문을 저 위치에 추가 작성하였는데도 틀렸다고 뜹니다.. 다른 이유가 있을까요?

0

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

안녕하세요 민우님 ㅎㅎ

잘 작성하셨는데요.

"다른 순간" break;를 걸어야 하지 않을까요?

예를 들어

aabbca

라고 했을 때

a : a

a : c 다르네? ret = 0

그리고!

b : b 같네 ret = 1

이렇게 되지 않을까요?

	for (int i = 0; i < s.size(); i++) {
		if (s[i] == os[i])
		    ret = 1;
		else{
		    ret = 0;
                    break;
                } 
	}

이렇게 한번 고쳐보시겠어요?

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.