전체 글 385

[백준] 15596번: 정수 N개의 합 (JAVA, 자바)

15596번: 정수 N개의 합 (JAVA, 자바) 해당 문제는 각 자기가 제출할 언어의 함수를 만들어 제출하면 됩니다. 제출을 누르고 언어를 Java로 선택하면 아래와 같이 기본적인 class의 틀이 만들어져 있습니다. class Test { public long sum(int[] a) { int ans = 0; return ans; } } 아래와 같이 기본적으로 만들어져있는 틀에서 a 배열의 값을 ans 변수에 모두 담아 리턴시켜주기면 하면 됩니다. class Test { public long sum(int[] a) { int ans = 0; for(int i=0; i

[백준] 4344번: 평균은 넘겠지 (JAVA, 자바)

4344번: 평균은 넘겠지 (JAVA, 자바) 대략적인 설명은 코드 블럭 안에 넣어 두었습니다. 해당 문제에서 조심해야할 것은 "평균을 넘는 학생들의 비율"에서 "넘는" 것이기 때문에 이상이 아닌, 초과로 계산하여야 합니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int C = sc.nextInt(); // 테스트 케이스 수 입력받기 for(int i=0; i

[백준] 8958번: OX퀴즈 (JAVA, 자바)

8958번: OX퀴즈 (JAVA, 자바) 첫번째 줄에 테스트 케이스의 개수(N)을 입력받은 후 N개만큼의 OX 문자열을 입력 받습니다. 그 후 중첩 반복문을 통해 OK 문자열의 길이만큼 반복하여 첫 글자가 O일 경우 카운트를 추가시켜 연속된 숫자일 경우 +된 상태로 스코어와 함께 추가 해주고, X일 경우 연속되지 않으니 카운트를 초기화 시켜 다시 1점부터 시작하게 생성합니다. 그대로 반복하여 연속된 숫자일 경우 카운트에 의해 +1점씩 추가, X를 만날경우 카운트가 0이 되어 다시 1점부터 시작을 반복 합니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanne..

[백준] 1546번: 평균 (JAVA, 자바)

1546번: 평균 (JAVA, 자바) 문제 해석이 잘 안되는 것 같네요. 아래와 같이 이해하고 풀었습니다. 첫번째 입력값은 과목 개수(N) 두번째 입력값은 과목 개수(N) 만큼의 점수 ex) 첫번째 줄에서 3개(N) 과목을 입력 받았을 경우 계산 방식 과목1 / 최대점수과목(M) * 100 과목2 / 최대점수과목(M) * 100 과목3 / 최대점수과목(M) * 100 ※ 주의 : int형으로 나눌 경우 소숫점에 의해 값이 0으로 나오기 때문에 float형으로 해주어야 함 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = ..

[JAVA] 자바 int a = 011 -> 9가 나오는 이유 ( what is "int a = 011" and not 9 why, The literal 09 of type int is out of range )

자바 int a = 011 -> 9가 나오는 이유 ( what is "int a = 011" and not 9 why, The literal 09 of type int is out of range ) 위와 같이 자바에서 의도치 않은 에러가 나올 경우가 있습니다. 똑같은 값을 변수에 입력 하더라도 입력 방식에 따라 서로 다른 의미가 부여되어 다른 결과값이 나오게 됩니다. int num1 = 07 8 진수 int num2 = 7 10 진수 int num3 = 0x7 16진수 int num4 = 0b0111 binary (2진수) 결과값은 아래와 같습니다. 아래 결과를 이해하기 위해서는 8진수, 10진수, 16진수, binary(2진수)의 계산 방식을 이해할 필요가 있으며 이번 포스팅의 목표는 진법에 대해 아..

Programming/JAVA 2022.03.16

[JAVA] 자바 charAt()의 문자('1'~'9')를 정수형과 비교(if) 방법

자바 charAt()의 문자를 정수형과 비교(if) 방법 아래의 번호는 3가지 방법이 있다는 뜻이 아닙니다. 3가지 내용들을 확인 해보면 어째서 이렇게 비교해야 하는지 이해하실 수 있습니다. 1. charAt()의 리턴 타입은 char형 입니다. 자바의 charAt()은 리턴 타입이 char형입니다. 아래 예시를 기준으로 반환값이 숫자로 보일테지만 실제로는 '1', '5', '8', '9'과 같습니다. 즉, 아래와 같은 코드가 있을 때 반환값은 '1' 입니다. 2. 아스키 코드표(ASCII TABLE)을 확인하고 10진과 문자를 확인하여 비교 해보세요. 아래는 아스키 코드표의 일부 입니다. 10진법으로 숫자 48은 문자 '0' , 숫자 49는 문자 '1'으로 되어있습니다. 그렇다면 정수형과 문자(1~9)..

Programming/JAVA 2022.03.16

[백준] 2577번: 숫자의 개수 (JAVA, 자바)

2577번: 숫자의 개수 (JAVA, 자바) 이번 문제는 어쩌다보니 완전히 하드코딩으로 풀어 버렸습니다.... 이게 맞나 싶은 코드지만 우연히 알게된 chars, filter, count로 해보니 덜컥 되어 버렸습니다. chars()는 String의 문자들을 스트림으로 만들어 주고, 필터를 통해 문자 '0'을 새로운 배열로 반환 후 count를 통해 개수를 새어 줍니다. 이렇게 0~9를 반복하여 하나씩 출력하면 String 문자열의 문자를 하나하나 확인 후 카운팅할 수 있습니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int..

[백준] 2562번: 최댓값 (JAVA, 자바)

2562번: 최댓값 (JAVA, 자바) 처음에 for문 하나로 쓰려다가 포기하고 결국 두개로 했습니다. 처음 for문에서 값을 입력 받고, 두번째 for문에서 max와 index를 구했습니다. num 배열에 들어있는 값이 max(0)보다 클 경우 max에 값을, index에 해당하는 i+1 값을 넣으며 배열이 끝날때까지 반복 합니다. index의 값에 i+1을 넣는 이유는, 문제에서 max값의 인덱스 번호가 아니라 몇번째(1~9) 수인지 구하라고 하기때문에 인덱스 번호보다 1을 더 주어야 합니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(Syste..

[백준] 10818번: 최소, 최대 (JAVA, 자바)

10818번: 최소, 최대 (JAVA, 자바) 쉬운 문제일꺼라 생각했는데 아래 부분에서 꾀 많은 시간을 잡아 먹었습니다. 예제 코드로는 정상적인 값으로 출력 되어 어디가 문제인지 몰랐는데, 자세히 보니 입력받은 순서에 따라 else if에 가기 전 if문에도 모두 true가 나와버려 결과값이 엉뚱한 값으로 나와버렸습니다. 두번째로 아래와 같이 입력값 입력받은 후 배열로 변경하고, 오름차순으로 정렬 후 맨 처음 인덱스(0)의 값과, 맨 마지막의 인덱스 값을 가져 왔습니다. N개의 입력값에 5를 입력 받을 경우 배열의 마지막 인덱스는 4가 되므로 -1을 해주었습니다. import java.util.Arrays; import java.util.Scanner; public class Main { public s..

[백준] 알고리즘 단계별로 풀어보기 - 3 (자바)

알고리즘 단계별로 풀어보기 - 3 (자바) 오늘은 잠깐... 10952번: A+B - 5 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { int A = sc.nextInt() + sc.nextInt(); if(A==0) { break; } System.out.println(A); } } } 10951번: A+B - 4 처음 코드... 결과값은 똑같은데 왜 자꾸 런타임 에러를 발생하는지 도저히 이해할 수 없어서 검색을 했습니다. EOF를 주의해야하고 입력값이 있는가 없는가를 봐야한다고 합니다... import ..