목록swea (16)
우당탕탕 개발일지
문제Starteatingwellwiththeseeighttipsforhealthyeating,whichcoverthebasicsofahealthydietandgoodnutrition.위 문장에서 ti 를 검색하면, 답은 4이다. 찾아야할 문자열과 문장이 주어진다. 찾아야할 문자열이 문장에서 몇번 등장하는지 구하여라 입출력 예 풀이replace 를 통해서 아주 쉽게 구할 수 있다. 주어진 문자열을 특수문자로 변경 후, 특수문자의 개수를 구하면 된다. 코드import java.util.Scanner;import java.io.FileInputStream;class Solution{ public static void main(String args[]) throws Exception { Scanner sc..
문제1238099084 라는 문자열이 주어진다. 아래 그림과 같이 연속으로 반복되는 동일한 숫자가 있을 경우 소거한다. 더이상 소거할 숫자가 없을 때까지 진행하여 남은 문자열을 반환하여라 입출력 예 풀이해당 문제는 연속된 동일한 숫자 소거하는 작업을 반복하는 부분이 중요한다.따라서 해당 작업을 진행하는 함수 removeNum 을 만들어 while문 안에서 호출하도록 설계했다. removeNum 함수는 매개변수로 받은 문자열에 규칙에 따라 소거해야하는 문자를 모두 소거한 후,결과 문자열을 반환한다. 그 후, 결과 문자열의 길이와 이전 문자열의 길이가 동일한지 확인한다.길이가 같다면 더이상 소거할 문자가 없는 것으로 판단하여 결과 값으로 취급한다. removeNum 함수 매개변수로 받은 문..
문제1차원 수직선 위에 정원이 있다. 모든 정수 1 ≤ i ≤ N 에 대해, 좌표 i에 꽃이 하나씩 심겨 있다. 즉, 좌표 1, 2, …, N에 총 N개의 꽃이 심겨 있다.분무기는 정수 좌표에 놓을 수 있으며, 좌표 x에 분무기를 놓았을 경우 닫힌 구간 [x - D, x + D]에 심긴 모든 꽃들에 물을 줄 수 있다.N과 D가 주어질 때, 모든 꽃이 한 개 이상의 분무기에서 물을 받을 수 있도록 하기 위해 필요한 최소한의 분무기 수를 구하는 프로그램을 작성하라. 입출력 예 풀이문제에 의하면 분무기 1개의 범위는 [x - D, x + D] 이다. 해당 범위에 존재하는 꽃의 개수는 D * 2 + 1 개가 된다. 따라서 { 전체 꽃의 개수 / 1개의 분무기가 뿌릴 수 있는 꽃의 개수 } 를 통해서 최소한의 분..
문제총점 = 중간(35) + 기말(45) + 과제(20)10개의 평점"A+", "A0", "A-", "B+", "B0", "B-", "c+", "C0", "C-", "D0" 10 개의 평점을 총점이 높은 순서대로 부여하는데, 각각의 평점은 같은 비율로 부여할 수 있다.예를 들어, N 명의 학생이 있을 경우 N/10 명의 학생들에게 동일한 평점을 부여할 수 있다. [ 입력값 ]1. 입력으로 각각의 학생들의 중간, 기말, 과제 점수가 주어짐2. 학점을 알고싶은 K 번째 학생의 번호 주어짐 K번째 학생의 평점을 구하여라 입출력 예 풀이 코드Scanner sc = new Scanner(System.in); int tc = sc.nextInt(); String[] str_fina..
문제N * N 퍼즐 모양에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 프로그램 그림과 같은 5 * 5 퍼즐 모양이 있다고 가정한다. K = 3 일 때, 자리는 2가지( 1번 가로, 4번 가로 ) 경우이다. 퍼즐의 모양은 2차원 배열로 제공된다. 이때 흰색 부분은 1, 검은색 부분은 0 입출력 예 풀이먼저, 연속된 흰색 칸의 개수와 k 값과 동일해야 한다. 1이 몇번이나 반복하는지 알기 위해서는 2가지로 판별한다.1. 0이 나오기 전까지 1이 몇번 연속되는지 2. 마지막 인덱스가 1이며 1이 몇번 연속했는지 또한, 0이 나올 경우에는 1이 연속되는 값을 초기화 하여 1이 나올 부분을 위해 대기한다. 1. 가로 [ 첫번째 if문 ]1인지 확인 후, 연속된 횟수를 ..
문제"level" 과 같이 거꾸로 읽어도 제대로 읽은 것과 같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.단어를 입력 받아 회문이면 1을 출력하고, 아니라면 0을 출력하는 프로그램 구현 입출력 예 풀이단어의 가운데 있는 문자를 기준으로 양쪽이 동일한지 확인하면 된다. level의 경우, {0번 문자와 4번 문자}, (1번 문자와 3번문자} 가 동일한지 확인하면 된다. 따라서 가운데 문자의 인덱스를 구한 후, 양쪽을 비교한다. 양쪽 문자 비교는 for문을 문자의 인덱스까지 반복한다. 코드Scanner sc = new Scanner(System.in); int tc = sc.nextInt(); for (int t = 0; t tc; t++) { ..
문제 1. 숫자 1부터 순서대로 차례대로 말하되, “3” “6” “9” 가 들어가 있는 수는 말하지 않는다.2. "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다. 예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다. 입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를 게임 규칙에 맞게 출력하는 프로그램을 작성하라.박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다.여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다. 입출력 예 풀이1부터 확인하면서 n까지 숫자인지 박수인지 확인한다. 1. 하나의 숫자에 박수 ..
문제다음과 같은 조건 하에서 사재기를 하여 최대한의 이득 구하기 1. 원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다. 2. 당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구입할 수 있다. 3. 판매는 얼마든지 할 수 있다.예를 들어 3일 동안의 매매가가 1, 2, 3 이라면 처음 두 날에 원료를 구매하여 마지막 날에 팔면 3의 이익을 얻을 수 있다. 입출력 예 풀이해당 문제는 주어진 판매가 배열의 마지막 원소에서부터 풀면 된다. 구매한 가격보다 판매가가 최고로 큰 경우에만 팔아야 하기 때문이다. 따라서 아래와 같은 방식으로 움직인다. 1. 마지막 원소를 가장 큰 수라고 가정한다. 2. 마지막 원소와 하나 앞의 원소의 크기를 비교 한다. 2-1. 마지막 ..