전체 글 573

[Java] 백준 풀기 4673 - 셀프 넘버

자바 백준 4673번 실버 5 https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 문제 보기 분류: 수학, 구현, 브루트포스 알고리즘 문제 풀기 셀프 넘버인지 아닌지를 판단하기 위해 10_000 개의 배열의 Index 를 활용한다. 자기 자신과 각 자리의 합으로 이루어진 숫자는 셀프 넘버가 아니기때문에 배열에 1 로 표시를 해놓는다. 10_000 까지의 숫자를 모두 돌고 나서 배열에 1 이 아닌 0..

공부하기/백준 2023.01.22

[Java] substring() 원하는 위치의 문자열을 가져오기

String class 와 substring() String class 로 생성된 문자열은 char 로 이루어진 단일 문자들의 배열이라고 볼 수 있다. 따라서, String 문자열에서 index 를 이용하면 필요한 위치의 연결된 문자들을 return 할 수 있다. 이와 같이 index 를 이용한 문자를 가져오기 위해서는 substring() 을 사용할 수 있다. 두 가지 타입 substring() 은 두 가지 형태의 parameter 를 입력할 수 있는데, 시작위치만 표기하여 시작부터 끝까지 데이터를 반환하거나 시작위치와 끝위치를 입력하여 선택 부분에 대한 문자를 반환할 수 있다. from start point // 시작 위치만 입력. public String substring (int start_ind..

알아가기/Java 2023.01.21

[Java] 백준 풀기 11721 - 열 개씩 끊어 출력하기

자바 백준 11721번 브론즈 3 https://www.acmicpc.net/problem/11721 11721번: 열 개씩 끊어 출력하기 첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다. www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 자바 substring 을 사용하여 풀이해 본다. 10 개 마다 분리를 하기 위해서 문자열 개수를 10 으로 나눈 몫을 구하여 저장한다. 몫의 크기만큼 반복하며 substring() 에 입력될 i 증가에 따른 시작 위치 그리고 끝 위치를 지정한다. String result = inputdata.substring(10 * i, 10 * i + 10); ..

공부하기/백준 2023.01.21

[Java] 백준 풀기 25304 - 영수증

자바 백준 25304번 브론즈 5 https://www.acmicpc.net/problem/25304 25304번: 영수증 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것 www.acmicpc.net 문제 보기 분류: 수학, 구현, 사칙연산 문제 풀기 영수증에 적힌 금액과 구입한 물건의 종류를 차례로 입력받는다. 구입한 물건의 종류만큼 for loop 을 실행하면서 각 물건의 가격과 개수를 입력받는다. 금액과 개수를 곱하여 합산 금액을 누적해 나간다. 영수증에 찍힌 총 그액과 물건의 가격과 개수로 계산된 금액이 서로 일치하는지 판단한다. 코드 보기 // package ..

공부하기/백준 2023.01.20

[Python] 백준 풀기 2635 - 수 이어가기

파이썬 백준 2636번 실버 5 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 문제 보기 분류: 수학, 브루트포스 알고리즘 문제 풀기 입력되어진 수에대해 모든 경우를 돌려본다. 만약 예제 입력과 같이 100 이 입력되었을때 99, 98, 97, ,,, 2, 1, 0 을 돌아가면 주어진 조건 "세 번째부터 이후에 나오는 모든 수는 앞의 앞의 수에서 앞의 수를 빼서 만든다." 를 만족하는 모든 경우를 따져본다. 이때, 가장 많은 수 집합이 나온 경우를 업데이트 하며 저장하고 출력한다. 코드 보기 import sys inputdata = sys.stdin.r..

공부하기/백준 2023.01.19

[Python] 백준 풀기 2628 - 종이자르기

파이썬 백준 2628번 실버 5 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 종이 세로의 처음과 끝, 종이 가로의 처음과 끝 그리고 잘라야 하는 주어진 위치를 2차원 리스트 cutting_ls 에 모두 입력 받는다. 2차원 리스트를 모두 오름차순으로 정렬을 하여 세로 요소를 순차적으로 그 다음 가로 요소를 순차적으로 한 쌍씩 빼내어 그 차이를 각각 나누어 저장한다. height_ls 와 width_ls 에 저장된 잘린..

공부하기/백준 2023.01.18

[Java] 백준 풀기 1158 - 요세푸스 문제

자바 백준 1158번 실버 5 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 보기 분류: 자료 구조, 큐 문제 풀기 입력 받을 Queue 인 numQue 와 요세푸스 수를 저장할 numJosephus 를 준비한다. offer() 을 통해 1 부터 순차적으로 수를 Queue 에 입력 받는다. 모든 수가 저장된 numQue 에서 제일 처음에 들어온 수를 poll() 로 빼내어 맨 뒤에 다시 offer() 로 넣는 과정을 주어진 k - 1 횟수만큼 반복을 한다. 이 과정의 for loop 이 완료될 때마다 그 다음 수를 빼내어 num..

공부하기/백준 2023.01.17

[Java] 백준 풀기 17478 - 재귀함수가 뭔가요?

자바 백준 17478번 실버 5 https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 문제 보기 분류: 구현, 재귀 문제 풀기 base case 및 recursive case 조건을 인지하여 구현한다. base case 는 재귀함수가 끝나는 지점이며, return 을 하여 이전에 지속적으로 누적된 함수들을 되짚어 돌아간다. 재귀함수와 관련없는 첫 줄 어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. 를 시작으로.. recursive ca..

공부하기/백준 2023.01.16

[Java] 백준 풀기 2742 - 기찍 N

자바 백준 2742번 브론즈 4 https://www.acmicpc.net/problem/2742 2742번: 기찍 N 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 구현 문제 풀기 자바 연습. Scanner() 를 통해 입력을 받는다. 입력받은 n 만큼 for loop 을 돌리면서 1 씩 줄여가며 1 까지 출력을 한다. 코드 보기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = n;..

공부하기/백준 2023.01.15

[Python] 백준 풀기 5622 - 다이얼

파이썬 백준 5622번 브론즈 2 https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 문제 보기 분류: 구현 문제 풀기 문자열을 입력받아 하나씩 순차적으로 하나씩 빼낸다. 동일한 알파벳에 대해 조건을 주고 걸리는 시간을 누적해 더한다. 코드 보기 import sys inputdata = sys.stdin.readline def fnMakeACall(text): total_sec = 0 for t in text: if t == 'A' or t == 'B' or t == 'C': total_sec += 3 elif t == 'D' or..

공부하기/백준 2023.01.14