Java에서 불리언은 boolean 타입으로 표현되며, 값은 true 또는 false예요.
Java는 세 가지 불리언 연산자를 지원해요:
! (NOT): 불리언을 부정해요&& (AND): 불리언 두 개를 받아서 둘 다 true면 true를 반환해요|| (OR): 두 불리언 중 하나라도 true면 true를 반환해요!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true
이 연습 문제에서는 친구가 개발 중인 새로운 RPG 게임의 퀘스트 로직을 구현해요. 게임의 주인공은 Annalyn으로, 사납고 충성스러운 반려견과 함께 사는 용감한 소녀예요. 그런데 안타깝게도 재앙이 닥쳐요. 가장 친한 친구가 숲에서 열매를 찾다가 납치된 거예요. Annalyn은 친구를 찾아 구출하려고 하고, 원한다면 퀘스트에 반려견을 데리고 갈 수도 있어요.
한참 동안 흔적을 따라간 끝에, Annalyn은 친구가 갇혀 있는 야영지를 발견해요. 알고 보니 납치범은 둘이에요. 강력한 기사와 교활한 궁수죠.
납치범들을 찾은 Annalyn은 다음 중 어떤 행동을 할 수 있을지 생각해요.
여기에는 네 가지 과제가 있어요. 숲에 있는 세 인물의 상태와 Annalyn의 반려견이 함께 있는지를 바탕으로, 위 행동들을 할 수 있는지 판단하는 로직을 구현하는 거예요.
기사가 깨어 있는지를 나타내는 불리언 값을 받는 (static) AnnalynsInfiltration.canFastAttack() 메서드를 구현해요.
이 메서드는 기사의 상태를 기준으로 빠른 공격이 가능하면 true를 반환해요.
그렇지 않으면 false를 반환해요:
boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false
기사, 궁수, 죄수가 각각 깨어 있는지를 나타내는 불리언 값 세 개를 받는 (static) AnnalynsInfiltration.canSpy() 메서드를 구현해요.
이 메서드는 세 인물의 상태를 기준으로 일행을 첩보할 수 있으면 true를 반환해요.
그렇지 않으면 false를 반환해요:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
궁수와 죄수가 각각 깨어 있는지를 나타내는 불리언 값 두 개를 받는 (static) AnnalynsInfiltration.canSignalPrisoner() 메서드를 구현해요.
이 메서드는 두 인물의 상태를 기준으로 죄수에게 신호를 보낼 수 있으면 true를 반환해요.
그렇지 않으면 false를 반환해요:
boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
불리언 값 네 개를 받는 (static) AnnalynsInfiltration.canFreePrisoner() 메서드를 구현해요.
처음 세 매개변수는 기사, 궁수, 죄수가 각각 깨어 있는지를 나타내요.
마지막 매개변수는 Annalyn의 반려견이 함께 있는지를 나타내요.
이 메서드는 세 인물의 상태와 Annalyn의 반려견 동반 여부를 기준으로 죄수를 구출할 수 있으면 true를 반환해요.
그렇지 않으면 false를 반환해요:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Exercism에 가입하고 Java 트랙을 개념 26개연습 문제 158개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.