안녕하세요. 조경완입니다. 백준에서 문제들을 풀다 보면, 소수인팰린드롬 문제도 보셨으리라 생각합니다. 어렵지 않은 문제이지만, Loop를 칠 때, 어떻게 치면 좋은지 생각해 볼 수 있는 문제인 듯 싶어서 가지고 오게 되었습니다. 문제는 아래와 같습니다. 최악의 경우에는 a가 5, b가 1억이니 만만치 않은 문제인 듯 싶습니다. 그런데, 314명이 풀어냈습니다. 1억까지를 에라스토스테네스의 체로 거른다고 해도 힘들고, 그렇다고 팰린드롬을 로그 복잡도로 판별하고 루트 복잡도로 소수임을 판별하자니. 그것도 힘듭니다. 어떻게 하면 좋을까요? 아이디어는 의외로 단순합니다. 일례로 99823419가 소수인지 판단하는 것은 쉽지 않습니다. 그런데, 팰린드롬인지는 어떻게 판정하면 되나요? 그냥 뒤에서 부터 본 문자랑 ..
조건문 검색 결과
C언어에는 삼항 연산자가 있습니다. 어떻게 쓸까요? ((조건식1)?식1:식2) 여기서 조건식 1이 참이라면 식 1이 평가되고, 아니면 식 2가 평가됩니다. 흐름도는 대충 이런 식으로 갑니다. 그러면 if문이랑 비슷한 점이 많겠군요. 많은데, 보통 if문 안에는 문장들이 옵니다. 그런 반면에, 삼항 연산자는 식이 옵니다. 식이나 값이 온다면, 조건식에 맞으면 값을 어딘가에 대입하는 식으로 많이 쓰시는데요. 예제로 보여드리겠습니다. 예제 1을 봅시다. a와 b를 입력받았습니다. 그리고 6번째 줄을 보시면 (a>b)?a:b 라는 절이 보입니다. 이를 쪼개 봅시다. 그러면 a>b인 경우에, a라는 수식이나 값이 평가가 되고, 그렇지 않다면 b가 평가됩니다. 그 결과를 res라는 변수에 넣고 있어요. 즉, a>b..
C언어에서, 어떠한 조건문을 만족하면, 특정한 문장을 수행하게 할 수 없을까요? if, else if, else 공식으로 하실 수 있어요. 먼저, 이런 경우 먼저 생각해 봅시다. 패턴 1은 다음과 같습니다. if(조건문) 명령1; 명령2; 이 경우 조건문이 참이라면 명령1, 명령2 순서대로 실행이 되고, 그렇지 않다면 명령 1만 수행되는 패턴입니다. if(x>=0)이 하나 있어요. x가 0보다 크다면 work() 함수가 수행이 될 거에요. 그렇지 않다면, 바로 7번째 줄로 갈 겁니다. 이것을 흐름도로 그려보면 아래와 같습니다. 만약에 x>=0이라면 work를 수행합니다. 그렇지 않다면, work를 수행하지 않고, 그냥 건너 뛴다는 것을 알 수 있어요. 만약에, 조건을 만족하지 않으면, 다른 문장이나 블록..
최근댓글