분류 전체보기 574

[Python] 백준 풀기 1316 - 그룹 단어 체커

파이썬 백준 1316번 실버 5 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 맨 왼쪽 문자를 빼내고 그 다음 문자와 비교한다. 서로 같은 문자이면 일단 조건문을 통과하고, 만약 다른 문자가 나올때 그 남은 문자 묶음에서 빼어낸 문자가 있는지 확인한다. 있다면 return 0 으로 함수를 종료한다. word 의 단어가 1개 남을때까지 조건 (그룹 단어가 안되는 조건) ..

공부하기/백준 2022.12.24

[Java] array 값 정렬하기 w/o Arrays.sort()

조건이 만족하지 않을 때까지 swap array 안의 value 들이 서로 인접해 있는 value 와 서로 크기 비교를 한다. 이 과정은 for loop 으로 이루어지고 그 외부를 감싸는 while loop 를 멈추지 않게 한다. 만약 모든 정렬이 완료되어 더 이상 크기 비교 조건을 만족하지 않으면 그 회 while loop 는 false 값을 유지하여 종료가 된다. import java.util.Arrays; public class Main { public static void main(String[] args) { int[] array = {12, 56, 34, 89, 23, 67, 73}; int[] sorted = sortIntegers(array); System.out.println(Arrays..

알아가기/Java 2022.12.24

[Java] 중복 loop 중지하는 방법 (labeled break)

label : for & label : while 중복 loop 를 사용할 때 기본적으로 사용하는 break 는 현재의 curly braces { } 위치만 정지시킨다. 이를 확장하여 중복 loop 의 원하는 구간을 중지하길 원한다면 label 을 붙여 컨트롤할 수 있다. public class Main { public static void main(String[] args) { label_1 : for() { label_2 : for() { label_3 : for() { if () { break label_2; } } } } } } 기본적인 사용 형태는 위와 같다. loop 시작 지점에 특정 (label :) 을 붙여두고 원하는 조건에 대해 break 와 함께 사용한다. label : for brea..

카테고리 없음 2022.12.24

[Python] 백준 풀기 2720 - 세탁소 사장 동혁

파이썬 백준 2720번 브론즈 3 https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 사칙연산 문제 풀기 각각의 동전에 대해 몫과 나머지를 구하는 방법으로 해결한다. 주어진 입력값인 거스름돈에 대해 제일 큰 숫자인 25센트부터 몫을 구하고 그 나머지를 다음 연산 거스름돈으로 보낸다. 이 과정을 10센트, 5센트 그리고 1센트에 반복 적용하여 각각의 계산 결과 몫이 나타내는 동전의 개수를 출력한다. 코드 보기 import sys inputdata = sys.stdin.readl..

공부하기/백준 2022.12.23

[Java] for-each 사용

for-each를 이용하여 array 내부값들을 바로 출력하기 loop 를 돌리기위한 변수를 사용하지 않고 array 안의 요소를 순차적으로 바로 출력이 가능하다. 아래의 코드에서 iterate 이 될 객체는 myArray 이고, 각 element 는 myNum 에 하나씩 순차적으로 대입되어 반복 실행된다. public class MyClass { public static void main(String args[]) { int[] myArray = new int[] {5, 4, 3, 2, 1}; for (int myNum : myArray) { System.out.println("element in myArray: " + myNum); } } } // element in myArray: 5 // elem..

알아가기/Java 2022.12.23

[Python] 백준 풀기 14719 - 빗물

파이썬 백준 14719번 골드 5 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 문제 보기 분류: 구현, 시뮬레이션 문제 풀기 맨 아래 블록을 한 줄씩 제거해가며 그 라인에 물이 담긴 사각형의 개수를 누적하여 더한다. 블록이 저장된 리스트를 왼쪽에서 오른쪽으로 관찰을 진행하며 블록이 있는 곳에서 없는 곳으로 바뀌는 조건 if block_ls[i] != block_ls[i - 1] and block_ls[i] == 0: 을 찾..

공부하기/백준 2022.12.22

[Java] Scanner 와 BufferedReader 사용

Scanner and BufferedReader 콘솔창에서 문자를 입력받을 수 있는 두 입력 함수 Scanner 와 BufferedReader 를 사용할 수 있다. 내용이 짧고 whitespace 가 없는 경우 Scanner 를 사용하여 입력받을 수 있지만, 내용이 길어지고 whitespace 가 있는 경우에는 Scanner 를 사용하게 되면 첫 어절만 입력받게 되고 whitespace 이후의 데이터는 소실된다. 이를 해결하기 위해 BufferedReader 를 사용할 수 있다. BufferedReader 은 whitespace 가 포함된 더 긴 문장을 입력받을 수 있지만 Scanner 와 달리 문자열 String 밖에 읽지를 못한다. 반면 Scanner 은 수와 관련된 int, short, long, ..

알아가기/Java 2022.12.21

[Python] 백준 풀기 1439 - 뒤집기

파이썬 백준 1439번 실버 5 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제 보기 분류: 문자열, 그리디 알고리즘 문제 풀기 0 과 1 조합의 숫자들을 리스트에 각각 입력받는다. 숫자들의 맨 앞과 맨 끝의 수가 같은지 확인을 한다. 만약, 같다면 그 반대되는 수를 기준으로 하여 check 에 저장해 둔다. 이때, count 는 0 으로 시작. 숫자들의 맨 앞과 맨 끝의 수가 다르다면, 첫 수와 반대되는 수를 check 에 저장한다. 이..

공부하기/백준 2022.12.21

[Python] 백준 풀기 11656 - 접미사 배열

파이썬 백준 11656번 실버 4 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 문제 보기 분류: 문자열, 정렬 문제 풀기 생성된 접미사를 저장할 리스트 s_ls 생성하고 첫 문자 s 를 저장한다. s 의 문자 길이 - 1 만큼 for loop 을 실행하고, 이때 문자의 맨 앞자리를 하나씩 제거하고 이를 리스트에 누적 시킨다. 사전순으로 정렬하기 위해 sort() 함수를 이용하여 정렬을 한 후, 순서대로 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline def fnSuffix..

공부하기/백준 2022.12.20