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

이선용님의 프로필 이미지
이선용

작성한 질문수

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

2-E와 분할정복(Divide & Conquer)

안녕하세요 2-E 푸는중 질문이있습니다.

작성

·

197

0

http://boj.kr/066bf2d88dcc4b16be8da489d9449b1c
정답은 맞추었는데

조건체크부분에서 전부 1이거나 전부0인부분을 체크할때에 문자열의 크기가1일때 전부 합이 4거나 0이면 전부1이거나 0인조건으로 체크하여 결과를 리턴했는데 깔끔하지 못한것같아 혹시 조건문체크에서 전부1이거나 0을 체크할수있는 좋은 방법이있을까 싶어 질문을남겨봅니다 감사합니다.

답변 2

0

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

안녕하세요 선용님 ㅎㅎ

조건체크부분에서 전부 1이거나 전부0인부분을 체크할때에 문자열의 크기가1일때 전부 합이 4거나 0이면 전부1이거나 0인조건으로 체크하여 결과를 리턴했는데 깔끔하지 못한것같아 혹시 조건문체크에서 전부1이거나 0을 체크할수있는 좋은 방법이있을까 싶어 질문을남겨봅니다 감사합니다.

>>

		if (str0.size() == 1 && str1.size() == 1 && str2.size() == 1 && str3.size() == 1)
		{
			if (str0[0] + str1[0] + str2[0] + str3[0] - 48 * 4 == 4 || str0[0] + str1[0] + str2[0] + str3[0] - 48 * 4 == 0)
				return str0;
		}

이부분 말씀하시는거죠?

 

음.. 이렇게 하는게 좀 더 깔끔한 코드인 거 같아요.

        if(str0.size() == 1)
		{
			if (str0[0] + str1[0] + str2[0] + str3[0] - 48 * 4 == 4 || str0[0] + str1[0] + str2[0] + str3[0] - 48 * 4 == 0)
				return str0;
		}

다만, 드라마틱하게 더 깔끔하게는 못만드는 거 같아요. ㅎㅎ

잘 짜셨습니다.

 

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

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

감사합니다.

강사 큰돌 올림.

이선용님의 프로필 이미지
이선용
질문자

고맙습니다, 계속 잘보겠습니다

0

안녕하세요, 인프런 AI 인턴이에요.

조건문을 사용하여 전부 1이거나 0을 체크하기 위한 간단하고 깔끔한 방법은 다음과 같습니다.

우선, 문자열의 크기가 1이라면 첫 번째 문자와 같은지 확인하여 모든 문자가 같은지를 검사할 수 있습니다. 이후에, 모든 문자가 같은지를 확인하여 결과를 리턴할 수 있습니다.

다음은 예시 코드입니다.

def check_all_same(string):
    first_char = string[0]
    for char in string:
        if char != first_char:
            return False
    return True

def check_conditions(string):
    if len(string) == 1:
        if string[0] == "1" or string[0] == "0":
            return True
        else:
            return False
    else:
        # 전부 1인 경우
        if check_all_same(string):
            if string[0] == "1":
                return True
        # 전부 0인 경우
        elif check_all_same(string):
            if string[0] == "0":
                return True
        # 그 외의 경우
        return False

이러한 방식으로 모든 문자가 같은지를 체크하여 전부 1이거나 0인지를 판단할 수 있습니다. 코드를 참고하시고, 도움이 되었는지 확인해보세요. 추가로 궁금한 점이 있으시면 언제든지 물어보세요. 감사합니다.

이선용님의 프로필 이미지
이선용

작성한 질문수

질문하기