【Java】AtCoder의 ABC-194에 참가했습니다(레이트:197→230).

안녕하세요.

2021/3/6에 AtCoder의 ABC-194에 참가했습니다.
요율은 다음과 같습니다.



시간이 지나면서 C 문제까지 어떻게든 풀었습니다.
다만, 시간이 걸린 것과 C문제는 트라이&오류를 반복했기 때문에 낮아지고 있습니다.
다시 열어도 어쩔 수 없습니다만, 트라이&에러는 지금의 자신에게는 필요하므로, 뭐 좋을까라고. 순위는 4443위였다.

레이트는 197→230으로 갱신! 좋아 200 달성이다, 축하 (^▽^)/!

A 문제



문제 문장이 다소 어려워서 시간이 걸렸습니다.
무지유 고형분(A)과 유지방분(B)을 입력.
유고형분(A+B), 유지방분(B)의 비율에 따라 1~4의 값을 출력.
import java.util.Scanner;

public class Main{
public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  int a = sc.nextInt();
  int b = sc.nextInt();
  int nk = a+b;
  int ns = b;
  int flg = 0;
  //System.out.println(nk);
  if(nk>=15&&ns>=8){
    flg = 1;
  }else{
    if(nk>=10&&ns>=3){
    flg = 2;
    }else{
      if(nk>=3){
        flg=3;
      }else{
        flg=4;
      }
    }
  }
  System.out.println(flg);
}
}

B 문제



N명의 직원, 각각 A의 작업 시간과 B의 작업 시간이 있다.
둘 다 정리하는 데 가장 짧은 시간은 얼마입니까?
(같은 종업원의 경우는 Ai+Bi, 다른 종업원의 경우는 시간이 걸리는 분)
import java.util.Scanner;

public class Main{
public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  int n = sc.nextInt();
  int a[] = new int[n];
  int b[] = new int[n];
  for(int i=0;i<n;i++){
    a[i] = sc.nextInt();
    b[i] = sc.nextInt();
  }
  int min = 100001;
  int lg = 0;
  for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
        lg = 0;
        if(a[i]>b[j]){
          lg = a[i];
        }else{
          lg = b[j];
        }
        if(i==j){
          if((a[i]+b[j])<min){
            min = a[i]+b[j];
          }else{
          }
        }else{
          if(lg<min){
            min = lg;
          }else{
          }
        }
      }
  }


  System.out.println(min);
}
}

C 문제





라는 것입니다.
처리 시간이 걸리기 때문에, 입력시에 계산 가능한 값을 계산하면서, 루프를 하지 않고 합계치를 구하는 로직으로 바꾸어 갔습니다. 시행 착오와 시간 빠듯하고 어떻게 든 꽤 있었습니다.
import java.util.Scanner;

public class Main{
public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  int n = sc.nextInt();
  long a[] = new long[n];
  long ttl =0;
  long ttl2 =0;
  long r2 = 0;
  long r2j = 0;
  for(int i=0;i<n;i++){
     a[i] = sc.nextLong();
     if(i>0){
     r2 = r2 + (-1)*a[i-1];
     r2j = r2j + a[i-1]*a[i-1];
     ttl2 = ttl2 + i*(a[i])*(a[i]) + (2)*a[i]*(r2) + r2j;
     }else{
     }
     //System.out.println(" i*(a[i])*(a[i]) " + i*(a[i])*(a[i]) + " r2 " + r2 + " r2j " + r2j + " ttl2 " + ttl2);
     // for(int j=0;j<i;j++){
     //   ttl = ttl + (a[i]-a[j])*(a[i]-a[j]);
     // }

  }
  //int total = 0;
  //for(int i=0;i<n;i++){
  //  for(int j=i+1;j<n;j++){
  //    total = total + (a[j]-a[i])*(a[j]-a[i]);
  //  }
  //}

  System.out.println(ttl2);
  //System.out.println(ttl);
  //System.out.println(total);
}
}


감상



올해 이내에 갈색을 얻는 목표이지만 의외로 다가온 것 같습니다.

프로그래밍이라고 쓰고 있을 때는 괴롭고, 끝나면 즐겁지요.
개발 현장의 기분을 유지해 가는 의미에서도, 경기 프로그래밍은 좋을까라고 생각했습니다.

앞으로도 철저히 노력하고 갈색을 목표로하고 싶습니다!
마찬가지로 회색 레벨에서 노력하고있는 분, 서로 노력합시다!

좋은 웹페이지 즐겨찾기