분류 전체보기 53

콜라츠 추측

문제 이 프로그램은 어떤 숫자를 일련의 작업을 통해 1로 만드는 데에 걸리는 횟수를 결과로 보인다. 일련의 작업이란, 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한다. 이 두 작업을 입력된 수가 1 이 될 때 까지 반복하고, 작업을 반복한 횟수를 반환한다. 단, 작업을 반복한 횟수가 500번을 넘어간다면, -1을 반환한다. 실행 결과 1: 16을 입력했을 때의 실행 결과이다. 실행 결과 2: 626331을 입력했을 때의 실행 결과 이다. 이 입력은 문제가 있었다. 입출력 예제에서는 626332를 입력하라고 했는데, 출력은 500에 한참 미치지 못하는 110이 나왔다. 그래서 뭔가 잘못되었구나-하고 코드를 열심히 살펴봤다. 그러다가 입출력 예 설명 부분을 봤더니, 입력 626331에 대한 설명이 ..

서울에서 김서방 찾기

문제 이 프로그램은 문자열 배열 seoul에 이름(들)을 받는다. 그 중 "Kim"의 배열의 위치을 찾아, "김서방은 (Kim이 있는 배열의 위치)에 있다."라는 출력을 보여준다. 그래서 for문을 통해 배열 seoul의 값 중 "Kim"과 같은 문자열을 찾은 후, 그 인덱스인 i를 사용하게 된다. 실행 결과 : 위 메인에 대한 실행 결과이다. 이번 문제는 제목이 재미있어 보였다. 그리고 문제도 재미있었다. 스토리를 조금 첨가해서 이렇게 유쾌한 문제도 만들 수 있구나 하는 생각이 들었다. 그냥 배열에서 어떤 문자열을 찾아 위치를 반환해라-라는 문제였다면 흥미도 동하지 않았을 뿐더러, 재미도 없었을 것이다. 그런데 '서울에서 김서방 찾기'라는 적절한 포장이 들어가자, 웃기기도 하고 재치 있게 느껴져서 즐겁..

이상한 문자 만들기

문제 프로그램은 공백을 기준으로 짝수 번째 문자를 대문자로, 홀수 번째 문자를 소문자로 바꾼다. 먼저 메인에서 문자열을 입력 받는다. 문자열의 짝수/홀수 번째 수를 판별하기 위한 카운트 변수를 선언 및 초기화 한 이후의 for문에서 공백을 만나면, 카운트를 0으로 초기화 한다. 공백을 만나지 않으면, 짝수 번째 인지 홀수 번째 인지 카운트 변수를 통해 if/else로 구분한다. 그리고 짝수 번째의 문자는 대문자로 바꾸어 스트링 버퍼에 추가하고, 홀수 번째 문자는 소문자로 변환해 추가한다. 그리고 카운트를 증가 시켜 다음 문자의 번째 수를 저장한다. for문이 종료 되면, answer에 이어 붙인 문자들을 담아 반환한다. 실행 결과 : 위 메인에 대한 실행 결과이다. 대소문자로 변환하라는 문제를 읽고 to..

완주하지 못한 선수

문제 프로그램은 participant와 completion라는 배열로, 각각 참가자와 완주자들의 이름을 받아 참가자 명단에는 있지만, 완주자 명단에는 없는 이름을 리턴 하는 논리로 작동 된다. 우선 participant와 completion을 메인에서 받아서, 위 문제의 제한 사항에 따른 예외 처리를 한다. 그 후 참가자 명단과 완주자 명단을 정렬한다. 그래서 for문을 통해 참가자 명단과 완주자 명단을 비교하는데, 완주자 명단이 참가자 명단보다 길이가 1개 짧기 때문에, if문에서 (완주하지 못한 선수 때문에) 걸릴 것이다. 그러면 차이가 나는 참가자의 i번째 사람 이름을 answer에 채워준다. 그러나 for문이 완주자 명단의 길이 만큼 돌기 때문에, for문에서 if문에 걸리지 않는 경우는, 참가자..

정수 제곱근 판별

문제 먼저 어떤 정수 n값을 solution()을 통해 받는다. 그 후 n의 제곱근과 정수형으로 변환한 n의 제곱근의 몫이 1과 같은 지 확인한다. 만약 n의 제곱근(이후 x라고 하겠음.)이 정수형이면, x/정수형으로 변환한 x의 몫은 1이 될 것이다. 그러나 x가 실수형이면, x/정수형으로 변환한 x의 몫은 1.x.....로 1이상의 실수형이 될 것이다. 이렇게 어떤 n값이 어떤 정수 x의 제곱인지 아닌지 판단한다. 그 후, x가 정수라면 문제의 지시에 따라 (x+1의 제곱)을 리턴 한다. x가 정수가 아니라면(=n값이 어떤 정수 x의 제곱이 아니라면) -1을 리턴 한다. 아래는 11의 제곱인 121을 입력했을 때, (11+1)의 제곱인 144를 반환한 실행 결과이다. 실행 결과 : 아래는 3을 입력했..