Notice
Recent Posts
문제 풀이 및 개발 공간
[문해프] 2주차 본문
1번
import java.util.*;
import java.io.*;
public class Test{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
while((st=new StringTokenizer(br.readLine()))!=null){
int n=Integer.parseInt(st.nextToken());
int[] num=new int[n];
int[] dp=new int[n];
for(int i=0; i<n; i++){
dp[i]=Integer.parseInt(st.nextToken());
}
boolean answer=true;
for(int i=1; i<n; i++){
int temp=Math.abs(dp[i]-dp[i-1]);
if(temp<n) {
num[temp]++;
}
else{
answer=false;
}
}
if(answer) {
for (int i = 1; i < n; i++) {
if (num[i] != 1) {
answer = false;
break;
}
}
}
bw.write(answer ? "Jolly\n" : "Not jolly\n");
bw.flush();
}
}
}
2번
import java.util.*;
import java.io.*;
public class Test{
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
int t=Integer.parseInt(br.readLine());
for(int i=0; i<t; i++){
int n=Integer.parseInt(br.readLine());
int p=Integer.parseInt(br.readLine());
int[] num=new int[p];
for(int j=0; j<p; j++){
num[j]=Integer.parseInt(br.readLine());
}
int[] day=new int[n+1];
for(int j=0; j<p; j++){
int k=num[j];
for(; k<n+1; k+=num[j]){
if(k%7==6 || k%7==0){
continue;
}
day[k]=1;
}
}
int answer=0;
for(int j=1; j<=n; j++){
answer= day[j]==1 ? answer+1 : answer;
}
bw.write(answer+"\n");
}
bw.flush();
}
}
3
import java.io.*;
import java.util.*;
class Point{
int x;
int num;
public Point(int x, int num){
this.x=x;
this.num=num;
}
}
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
HashMap<String, Integer> dict = new HashMap<>();
ArrayList<Point> black =new ArrayList<>();
ArrayList<Point> white =new ArrayList<>();
dict.put("T",10); dict.put("J",11); dict.put("Q",12); dict.put("K",13); dict.put("A",14);
dict.put("C",0); dict.put("D",1); dict.put("H",2); dict.put("S",3);
int value1;
int value2;
int[] shape;
String input;
while((input=br.readLine())!=null){
int blackscore=0;
int whitescore=0;
black.clear();
white.clear();
shape=new int[4];
st=new StringTokenizer(input);
//blac패
for(int i=0; i<5; i++){
String word=st.nextToken();
int cn=0;
if(word.charAt(0)-'0'<=9){
cn=Integer.valueOf(String.valueOf(word.charAt(0)));
}
else{
cn=dict.get(String.valueOf(word.charAt(0)));
}
shape[dict.get(String.valueOf(word.charAt(1)))]++;
int end=black.size();
boolean isAdd = false;
for(int j=0; j<end; j++){
if(black.get(j).x==cn){
black.get(j).num++;
isAdd=true;
break;
}
}
if(!isAdd){
black.add(new Point(cn,1));
}
}
int temp;
Arrays.sort(shape);
//다 똑같은 경우
if(shape[3]==5){
temp=value2(black);
blackscore= temp==1 ? 1:4;
}
if(blackscore==0){
blackscore=value(black);
}
if(blackscore==0){
temp=value2(black);
blackscore= temp==1 ? 5 :9;
}
//black 카드랑 우선순위 다 완료;;
//white 차례
shape=new int[4];
for(int i=0; i<5; i++){
String word=st.nextToken();
int cn=0;
if(word.charAt(0)-'0'<=9){
cn=Integer.valueOf(String.valueOf(word.charAt(0)));
}
else{
cn=dict.get(String.valueOf(word.charAt(0)));
}
shape[dict.get(String.valueOf(word.charAt(1)))]++;
int end=white.size();
boolean isAdd=false;
for(int j=0; j<end; j++){
if(white.get(j).x==cn){
white.get(j).num++;
isAdd=true;
break;
}
}
if(!isAdd){
white.add(new Point(cn,1));
}
}
Arrays.sort(shape);
if(shape[3]==5){
temp=value2(white);
whitescore= temp==1 ? 1:4;
}
if(whitescore==0){
whitescore=value(white);
}
if(whitescore==0){
temp=value2(white);
whitescore= temp==1 ? 5:9;
}
//white 긑
//이제 서로비교하기
int answer=10; //0비긴거 -1black 1white
if(whitescore < blackscore){
bw.write("White wins.\n");
continue;
}
else if(blackscore<whitescore){
bw.write("Black wins.\n");
continue;
}
else{
if(blackscore==1 || blackscore==5){
black=sortX(black);
white=sortX(white);
if(black.get(black.size()-1).x < white.get(white.size()-1).x){
answer=1;
}
else if(black.get(black.size()-1).x > white.get(white.size()-1).x){
answer=-1;
}
else{
answer=0;
}
}
else if(blackscore==2){
black=sortN(black);
white=sortN(white);
if(black.get(black.size()-1).x > white.get(white.size()-1).x){
answer=-1;
}
else if(black.get(black.size()-1).x < white.get(white.size()-1).x){
answer=1;
}
else{
answer=0;
}
}
else if(blackscore==3 || blackscore==6){
black=sortN(black);
white=sortN(white);
if(black.get(black.size()-1).x > white.get(white.size()-1).x){
answer=-1;
}
else if(black.get(black.size()-1).x < white.get(white.size()-1).x){
answer=1;
}
else{
answer=0;
}
}
else if(blackscore==4 || blackscore==9){
black=sortX(black);
white=sortX(white);
for(int i=4; i>=0; i--){
if(black.get(i).x > white.get(i).x){
answer=-1;
break;
}
else if(white.get(i).x > black.get(i).x){
answer=1;
break;
}
}
answer = answer==10 ? 0 : answer;
}
else if(blackscore==7){
black=sortN(black);
white=sortN(white);
for(int i=2; i>=0; i--){
if(black.get(i).x>white.get(i).x){
answer=-1;
break;
}
else if(white.get(i).x > black.get(i).x){
answer=1;
break;
}
}
answer= answer==10 ? 0 : answer;
}
else if(blackscore==8){
black=sortN(black);
white=sortN(white);
for(int i=3; i>=0; i--){
if(black.get(i).x > white.get(i).x){
answer=-1;
break;
}
else if(white.get(i).x > black.get(i).x){
answer=1;
break;
}
}
answer = answer==10 ? 0:answer;
}
if(answer==1){
bw.write("White wins.\n");
}
else if(answer==-1){
bw.write("Black wins.\n");
}
else{
bw.write("Tie.\n");
}
bw.flush();
}
}
}
//색 다 똑같
public static int value2(ArrayList<Point> a){
a=sortX(a);
boolean is=true;
for(int i=0; i<a.size()-1; i++){
if(!(a.get(i).x+1==a.get(i+1).x)){
is=false;
break;
}
}
return is ? 1:0;
}
public static int value(ArrayList<Point> a){
int same=0;
int sum=0;
for(int i=0; i<a.size(); i++){
if(a.get(i).num!=1){
same+=a.get(i).num;
sum++;
}
}
if(same==4){
return sum==2 ? 7 :2;
}
else if(same==5){
return 3;
}
else if(same==3){
return 6;
}
else if(same==2){
return 8;
}
else{
return 0;
}
}
public static ArrayList<Point> sortX(ArrayList<Point> a){
Collections.sort(a, new Comparator<Point>(){
public int compare(Point o1, Point o2){
return o1.x-o2.x;
}
});
return a;
}
public static ArrayList<Point> sortN(ArrayList<Point> a){
Collections.sort(a, new Comparator<Point>(){
public int compare(Point o1,Point o2){
if(o1.num==o2.num){
return o1.x-o2.x;
}
else{
return o1.num-o2.num;
}
}
});
return a;
}
}