전체 글 573

[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

[Java 복습] 프린트 그리고 변수

자바 과정을 시작하였다. 맥북에서 사용하는 이클립스는 별로 마음에 들지 않는다. 특히, 한글 주석을 입력할 때 마지막 글자가 씹히는 현상이 발생한다. 검색을 해보니 원래 그렇단다. 맥북을 사용하다 보면 한글 입력 완성에 그다지 신경을 쓰지 않는 것이 너무 뻔하게 보여 맥북의 문제가 첫 번째 원인이지만 다른 프로그램들은 이를 어떻게든 해결해준 모습을 보면 또 한편으로는 이클립스가 별로인지도.. (영어로 적으라는 큰 가르침인가) 자바는 17.0.5 버전을 설치하였고, 이클립스는 2021-12 버전을 설치하였다. https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html Java Archive Downloads - Java SE 1..