코테 공부를 시작한지 3주정도된거같다.
코테 준비하는 글을 찾아보고 아래 쓰신분이 풀어보라는 문제 위주로 풀어보고있엇다.
일단 속도는 신경쓰지지않고 문제푸는 연습부터 하고 있는데 생각보다 쉽지않고 , 응용이 잘되지 않는다.. 완전히 이해하고 푸는거같지도않고 , 한두문제 풀어서 이해할수 있는 개념도 아닌거같아서 , 중간점검겸 다시 앞으로 돌아 가기로했다..
https://covenant.tistory.com/224
코딩테스트 대비를 위한 백준 문제 추천
코딩테스트 대비를 위한 백준 문제 추천 끝 없는 훈련만이 실전에서 흐트럼없이 정답을 향해서 움직일 수 있습니다. (Photo by Specna Arms on Unsplash) 작년 한 해 수많은 코딩테스트를 직접 경험하고
covenant.tistory.com
복습겸 해보는 것이니까 최대한 정답을 안찾아보고 풀어보려고한다.
일단 문자열부터 ..
https://www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한
www.acmicpc.net
문자를 입력해주는데 단어간 띄어쓰기는 1칸 고정이며 몇개에 단어가 있는지 찾는문제이다.
카카오 코딩테스트 문자열쪽에서 비슷한 유형을 봤던거같긴하다
import java.io.*;
import java.util.regex.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
Pattern pattern = Pattern.compile("([a-zA-Z]+)");
Matcher matcher = pattern.matcher(s);
int count = 0;
while(matcher.find()) {
count++;
}
System.out.println(count);
}
}
두번쨰 문제는 생각보다 고민을 많이했다. 어떻게하면 효율적으로 짤수있을지도 고민해보았다.
일단 최근에 Comparable인터페이스를 사용하여 비교하는 것을 해보다보니 활용해보았다.
class 에 Comparable를 넣고 객체간 우선순위를 정할떄 int 값을 비교한다는 부분을 선언해놓으니
Arraylist 에 객체가 들어가도 Collections.sort 를 사용할 수 있었다. Comparable이 없으면 sort안됨
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
package com.myproject.CodeTest;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
s=s.toUpperCase();
int length = s.length();
ArrayList<Edge> arr = new ArrayList<>();
while(length!=0) {
char c = s.charAt(0);
s = s.replaceAll(c+"", "");
arr.add(new Edge(c+"",length-s.length()));
length=s.length();
}
Collections.sort(arr);
if(arr.size()==1) {
System.out.println(arr.get(arr.size()-1).s);
}else {
if(arr.get(arr.size()-1).i==arr.get(arr.size()-2).i) System.out.println("?");
else System.out.println(arr.get(arr.size()-1).s);
}
}
}
class Edge implements Comparable<Edge>{
public String s;
public int i;
Edge(String s ,int i){
this.s=s;
this.i=i;
}
@Override
public int compareTo(Edge o) {
return Integer.compare(i, o.i);
}
}
이렇게해서 문자열은 거의다 풀어보았다. (거의 같은문제는 제외 )