[백준] 단어의 개수
·
PROBLEM SOLVING
문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.입력 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.출력 첫째 줄에 단어의 개수를 출력한다.문제 풀이 맨 처음 문제 푼 코드는 다음과 같다.import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main..
[백준] 최대공약수와 최소공배수
·
PROBLEM SOLVING
문제두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. 문제 풀이나는 문제를 풀면서 알고리즘에 대해 거의 모르기 때문에 무작정 조건에 맞춰서 최대공약수와 최소공배수를 구하기에 바빴다.import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new..
[백준] 평균
·
PROBLEM SOLVING
문제세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 문제 풀이맨 처음 코드를 작성할 때에는 막힘없이 작성했다. 하지만 ..
[백준] 문자열 반복
·
PROBLEM SOLVING
문제문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력각 테스트 케이스에 대해 P를 출력한다. 문제 풀이문제는 간..
[프로그래머스] 모의고사
·
PROBLEM SOLVING
문제 설명수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주..
[프로그래머스] 두 개 뽑아서 더하기
·
PROBLEM SOLVING
문제 설명정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return하도록 solution 함수를 완성해주세요. 제한사항numbers의 길이는 2이상 100이하입니다.numbers의 모든 수는 0이상 100이하입니다. 문제 풀이이 문제를 맨 처음 어떻게 접근을 해야할지 도무지 감을 잡을 수 없었다.그 결과 책의 힘을 빌렸다. 이번에 프로그래머스 알고리즘 책을 하나 구매했다.한동안 고민을 해보고, 도저히 감을 못잡겠다 싶으면 긴 시간을 소비하지 않고 바로바로 책을 보면서 이해해보려고한다.그런데 책을 본 결과 내가 생각조차 하지 못한 접근법으로 문제를 풀었다.결과적으로 보았을 때, 책을 확인함으로써..
[백준] 문자열
·
PROBLEM SOLVING
문제문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오. 입력입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 하나의 문자열이 주어진다. 문자열은 알파벳 A~Z 대문자로 이루어지며 알파벳 사이에 공백은 없으며 문자열의 길이는 1000보다 작다. 출력각 테스트 케이스에 대해서 주어진 문자열의 첫 글자와 마지막 글자를 연속하여 출력한다. 문제 풀이이 문제는 생각보다 매우 금방 풀었다.먼저 전체코드부터 살펴보겠다.import java.util.Scanner;public class Main { public static void solution() { Scanner scanner = new Scann..
[백준] 단어 길이 재기
·
PROBLEM SOLVING
문제알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다. 출력첫째 줄에 입력으로 주어진 단어의 길이를 출력한다. 문제 풀이import java.util.Scanner;public class Main { public static void solution() { Scanner scanner = new Scanner(System.in); String text = scanner.nextLine(); System.out.println(text.length()); } public static void main(String[] arg..