옹실이의 개발이야기

Java 10

[백준] 알고리즘 #1316 : 그룹 단어 체커 (Java)

문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다. 풀이 1. Scanner로 입력받을 단어의 개수를 입력받아 nu..

알고리즘 2023.09.07

[백준] 알고리즘 #2941 : 크로아티아 알파벳 (Java)

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 입력 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있..

알고리즘 2023.06.18

[백준] 알고리즘 #4344 : 평균은 넘겠지 (Java)

문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 풀이 1. 케이스 회수 입력받는다. 2. 학생수 만큼 점수 입력받아서 합계를 구하고, 배열에 담는다. 3. 평균보다 높은점수 받은 학생 수를 구한다. 4. 평균 넘는 학생의 점수를 소수점 셋째자리까지 반올림 후 출력한다. 1 2 3 4 ..

알고리즘 2023.06.17

[백준] 알고리즘 #1157 : 단어 공부 (Java)

문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 풀이 어려워서 다른사람 코드 참고해서 풀었음.... 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 35 36 37 38 39 40 41 42 43 44 45 ..

알고리즘 2023.05.23

[백준] 알고리즘 #10988 : 팰린드롬인지 확인하기 (Java)

문제 알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오. 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다. 입력 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. 출력 첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다. 풀이 1. Scanner - System.in 을 이용해 값을 입력받아 str 변수에 담는다. (문자열은 입력받을 때 개행(nextLine())을 기준으로 받기 때문에 while안에 hasNextLine()으로 다음 입력값 유무를 체..

알고리즘 2023.05.22

Java IO/equals() : 파일 내용 읽어온 후 equals()로 텍스트 비교

요즘 나는 전에 했던 연상퀴즈게임 프로젝트를 종종 손보고 있다. 오늘은 최근에 했던 정답비교(텍스트의 내용 비교)하는 부분을 포스팅해봐야겠다. 텍스트는 String 이기 때문에 내용 비교를 위해서는 아래와 같이 equals() 메소드를 써야 한다. (== 연산자는 주소값 비교) 1 2 3 4 5 6 7 8 String str1 = "몽몽"; String str2 = "몽몽"; if( str1.equals(str2) ) { //str1과 str2의 내용이 같다면 System.out.println("내용이 같다"); } else { //내용이 같지 않다면 System.out.println("내용이 같지 않다"); } Colored by Color Scripter cs 텍스트 내용 비교 예시 :equals()..

Java 2020.12.10

Java 구구단 : 이중 for문을 이용한 구구단

면접보러 가면 종종 들어오는 질문 중 하나가 구구단이라는 얘기를 들었다. 얘기 들었을 때 구구단..? 어떻게 하는거였더라 생각들었는데 막상 해보니 정말 별 거 없었다.... 구구단의 원리를 생각해보고 코드를 작성해보았는데 이중 for문으로 아주 간단하게 구현할 수 있었다. 이렇게 구구단을 1단부터 9단까지 구한다고 했을 때 1 X 1 = 1 1 X 2 = 2 ... 2 X 1 = 1 2 X 2 = 4 ... 1단 ~ 9단 -> 1부터 9까지 증가하는 변수 1개 필요 단별로 1부터 9까지 곱해짐 -> 1부터 9까지 증가하는 변수 1개 필요 단을 표시하는 변수를 a, 단별로 곱해지는 수를 변수 b로 놓고 코드를 작성했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ..

Java 2020.11.23

Java 별찍기 : 이중 for문을 활용한 별(*) 찍기

for문 공부를 위해 많이들 한다는 별찍기를 복습해보았다. 이중 for문으로 행과 열을 구분해 총 4가지 모양의 별을 찍었다. 먼저 본격적인 별찍기에 앞서 준비물(?)로 String 타입의 공백 " "과 "*" 변수가 필요했다. 1 2 3 String str1 = " "; String str2 = "*"; cs 1. 왼쪽으로 치우친 별 찍기(1개씩 증가) * * * * * * * * * * 1개씩 늘어나는 별찍기는 공백을 사용하지 않아도 돼서 간단하다. 1 2 3 4 5 6 7 8 void m1(){ for(int i=1; i

Java 2020.11.19

Java 퀴즈 : 주어진 시간동안 문제 맞추는 O,X 퀴즈(멀티 쓰레드 활용)

Java의 IO, 멀티 쓰레드를 활용한 퀴즈 프로그램을 만들어보았다. 멀티 쓰레드는 시간 체크용(10초)으로 활용, Task라는 별도의 java 파일을 만들어 구현했다. * 게임 방식 * 1인당 10초동안 주어진 10개의 문제를 많이 맞추는 사람이 이기는 방식 1. 팀 이름을 입력받은 후 2. 문제 리스트(단어로 나와있음) 파일 가져와서 랜덤으로 문제 출제 3. 맞추면 O, 틀리면 X 를 입력받아 O일때만 1점 점수 획득 4. 다음 사람을 위해 맞춘 문제는 원본 파일 리스트에서 삭제된다. 5. 주어진 시간은 10초이며, 10초가 되면 문제가 다 출제되지 않았더라도 프로그램은 자동 종료된다. 1. 팀 이름 입력받기 팀 이름을 System.in으로 입력받고 System.out으로 팀 이름을 다시 확인시켜주었..

Java 2020.11.11

Java 멀티로또 : 명단파일, 숫자 입력받아서 숫자만큼 랜덤 뽑기

Java 로또 심화 버전! 랜덤으로 뽑을 명단 파일, 몇명 뽑을지 숫자 입력받아서 입력받은 수만큼 랜덤 뽑기 명단 파일을 받겠다고 했지만, 사실 파일을 직접 입력할 수 있다는 것을 보여주기 위해 입력받는 것일 뿐 기준은 '우리반리스트.txt'라는 파일로 코딩했다. * 순서 * 1. 파일 불러오기 : 엔터만 쳤을때 자동으로 우리반리스트 파일이름 넣기 2. 불러온 파일 읽고, 배열에 담기. 3. 리스트에서 몇명 뽑을건지 값 받기 4. 받은 수만큼 랜덤 뽑기 ( 중복방지 : TreeSet 이용(TreeSet 사이즈가 받은 값보다 작으면 다시 반복) ) 1. 파일 불러오기 : 엔터만 쳤을때 자동으로 우리반리스트 파일이름 넣기 아무것도 입력 안하고 엔터쳤을 때 : '우리반리스트.txt'라는 파일로 적용되고, 직접..

Java 2020.11.09