반응형

알고리즘/백준(BAEKJOON) 25

[자바]스택 /9012번 : 괄호 [백준]

스택을 이용하여 푸는문제 (와 )로만 구성되어있으며 균형잡힌 올바른 괄호식인지 구분하는 문제이다. () YES ()(()) YES ()(())() YES )() NO ()) NO ()((())))) NO ()(()))((0 NO 이처럼 ()가 균형있게 들어가 있어야 한다. Stack에 (경우 push )경우 pop 스택이 비어있는데 )가 들어가는 경우 균형이 잡히지 않기 때문에 바로 NO가 된다. 이를 이용해 문제를 풀어보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import java.io.BufferedReader; import java.io.IOException; impor..

[자바]1181 단어 정렬[백준]

초점 -단어의 길이가 짧은 순서대로 -길이가 같을 경우 사전 순으로 -같은 단어가 중복되어있을경우 한번만 출력하기 이번 문제로 배운게 있다면 배열에 특정 규칙을 정해 정렬을 하고 싶다면 Arrays.sort메소드에 Comparator을 구현해주면 된다. [Arrays.sort() 는 단순 배열을 오름차순으로 정렬해주는 것 뿐만 아니라 사용자에 의해 구현할 수 있다. ] Arrays.sort() 메소드 안에는 두 객체(원소)를 비교하여 순서를 바꿀지 판단하면서 정렬을 해준다. Comparator는 객체를 비교할 수 있도록 해주는 인터페이스다. int, char, double 등의 자바에서 제공하는 자료형들은 비교가 가능하지만, 특정 규칙에 의해 비교를 하고 싶은 경우에는 Comparator를 구현해야 한다..

[백준]10773번 제로 [JAVA]

스택을 이용하여 푸는문제 나처럼 알고리즘 공부를 시작하는 알린이용 문제다. 자바에서 기본으로 지원해주는 Stack을 이용했다. 1.첫줄에 입력되는 정수k를 받아준다 2.for문으로 k횟수만큼 반복한다. 3.Int타입의 변수number를 이용해 정수를 받아준다. 4.if문을 이용해 3에서 받아준 정수가 0일경우 Stack의 pop 을 0을 제외하고는 push(number)을 해준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java...

[백준]10828 스택 /자바/JAVA

스택은 기본 원칙이 '후입선출(LIFO : Last in First out)' 이다. 말 그대로 '나중에 들어온 것이 먼저 들어오는 방식'이다. 먼저 들어온 것은 가장 아래에 있고, 가장 아래에 있는만큼 가장 나중에 빠져나오게 된다. 그리고 데이터를 추가하는 작업을 push 라고 한다. 또한 데이터를 삭제하는 작업을 pop 이라고 한다. 이를 토대로 메서드를 구현하였다. 1 2 3 4 5 public class Stack10828 { private static int[] arr; //스택을 담는 배열 private static int str=0; //스택포인터 } Colored by Color Scripter cs str은 스택 포인터로 스택에 쌓여있는 데이터의 수를 나타낼 것이다. 시작값 = 0 배열 ..

[JAVA] 백준 2750 수 정렬하기

https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 두가지 방법으로 나누어 풀어보았다. 1. 버블정렬 2. 메소드 이용하기 1.[버블정렬] 첫 번째 인덱스부터 시작하여 뒤의 인덱스들의 값들과 비교하여 최솟값들을 차곡차곡 쌓아나가는 방법이다. 나는 BufferReader를 이용하여 값을 받았다. 첫 줄의는 숫자의 갯수가 들어오기떄문에 들어온 값을 Integer.ParseInt해준다. 이후 배열을 다음 숫자들의 값을 받아줄 배열을 받아주며 길이는 첫줄의 숫자로..

백준 1차원배열/4344 자바/평균은 넘겠지

https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net [풀이방법] 1. Scanner를 통해 값을 받는다 2. tastcase의 갯수를 받고 for문을 tastcase만큼 반복한다. 3. 각 케이스의 학생수를 int student로 받은후 student의 길이만큼의 arr배열을 생성해준다. 4. sum이라는 변수를 0으로 초기화 해둔 후 2중 for문을 구성하여 학생의 수만큼 반복하며 arr에 각 점수를 넣어준다. 5. arr에 들어간 점수를 sum 에 누적하여 합계를 만든다. 6. 이후 합계를 학생수로 나누어 mean이라는 ..

[1152 자바] 단어의 개수/백준

https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문자열을 공백을 기준으로 나눠서 단어의 개수를 구하는 문제이다. " "로 나눠서 구하면되는 쉬운문제로 보이지만 주의해야할점은 예제2 처럼 문자열 맨 처음 공백을 넣을경우 제외하고 구해야한다. [풀이방법] Scanner로 값을 받아 line에 문자열을 저장한 후 StringTokenizer를 통해 " " 로 line을 나눠준 후 countTokens()를 사용하면 값을 구할 수 있다. impo..

[1157 자바] 단어공부: 알고리즘/ 백준

해당 문제는 문자의 코드값을 다루는 문제이다 아스키코드를 알고 있다면 문제는 쉬워질 것이다. 아스키코드의 대문자 A는 65 소문자 a는 97부터 시작한다. [풀이방법] 1. Scanner를 이용하여 단어를 word 변수에 받는다. 2. 알파벳의 길이는 26개 배열 arr[26]을 생성해준다. 3. for문을 통해 단어의 각 알파벳을 비교해준다. 단어의 길이만큼 반복한다(word.length). 4. 문제의 핵심은 대문자 소문자 구별 없이 가장 많이 있는 알파벳을 구해야 한다. for문안에 if문을 통해 대문자와 소문자를 구별해서 계산해준다. if문 조건식에 단어의 각 알파벳이 65~90 사이일 경우 (대문자) , 그 이외에는 else (소문자)로 구별하여 if문을 나눠준다. 대문자일 경우 해당 알파벳의 ..

[10809 자바] 알파벳 찾기 [백준]

아스키 코드를 활용해 입려된단어의 각각의 알파벳이 처음 등장하는 위치를 출력하는것! + (포함되지않은 알파벳은 -1과 공백으로 구분해준다.) [풀이방법] 1. 우선입력방식은 두가지가 있다. Scanner와 BufferReader 두가지 방법중 하나를 사용하면되고 Scanner의 경우 주석처리를 해놨다. (BufferReader가 좀 더 입력에 성능이 뛰어나다.) 2. String 형태로 입력문자를 word에저장해준다. 3. 소문자 알파벳의 길이의 배열 arr을 생성해준다. 4. 생성된 배열 전체의 값을 for문을 통해 -1로 설정해준다. 5. 이제 입력받았던 word 문자열을 각 문자로 나눠서 처음 시작하는 arr[]해당위치에 순서를 넣어줘야한다. 6. for문을통해 0부터 단어의 길이만큼 반복해준다. ..

백준 /11720 자바/숫자의 합

https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 첫줄에 숫자의 갯수 N을 받고 다음줄에 N개의 숫자가 공백없이 주어진다. 두번째 줄의 문자열로 받은 후 -> 문자로잘라주고 -> 숫자로 변경해서 더해주는게 핵심이다. [풀이] 1.Scanner를 통해 받은 숫자의 갯수를 N에 저장 2.N개의 연속된 숫자들을 스트링 타입의 number에 저장 3.for문을 통해 N개의 갯수를 돌면서 sum에 누적을 해준다. (나는 number에 각 위치별문자를 String.valueOf로 변환하고 다시 Integer로 parseInt를 해서 누적해..

반응형