Algorithm & Data Structure

    [10818] 최소, 최대

    [10818] 최소, 최대

    몇개의 값을 넣을 건지 정하고, 그 값들을 넣은 후, 그 값들 중 최솟값고 최댓값을 구하면 되는 문제이다. 처음에 넣는 값을 배열의 길이에 넣고, 반목문을 돌리면서 값하나하나를 배열에 넣어줬고, 넣어주면서 최소최대도 같이 처리해주었다. 처음 최댓값, 최솟값에 넣을 변수는 최댓값에는 가장 작은 값으로, 최솟값에는 가장 큰 값으로 넣으면 된다. 여기서 정수의 범위가 -1000000~1000000이라 했으므로 그 사이의 값을 넣었다. 백준알고리즘문제풀이에서는 클래스이름을 무조건 Main으로 해줘야 할 것이다. 처음에 이걸 모를 땐 한참을 헤멨었다.. +) int a는 굳이 선언해줄 필요는 없다. 바로 array[i]에 넣으면 될 것이다.

    [2446] 별찍기 - 9

    [2446] 별찍기 - 9

    실습1카테고리에 있는 문제의 거의 마지막 문제이다. (21번 문제는 앞에 별문제보다 정답률이 높아서 건너띌 것이다.) 출력 모습부터 어려워보였는데 정말 배열 하나를 생각못해서 오랜 시간을 헤맸다... 결론은 배열을 이용하면 된다. 줄은 0,1,2,3,4,5,6,7,8로 할지 0,1,2,3,4,3,2,1,0으로 할지 고민해봤는데, 조금이라도 for문에서 겹칠 것같은 0,1,2,3,4,3,2,1,0으로 하기로했다. 그리고 막연히 문제를 풀기시작하기보다 규칙을 찾아보면 더 빨리 풀수있게 된다. 규칙은 별의 개수이다. 9,7,5,3,1,3,5,7,9 순으로 나열돼있기때문에, 9,7,5,3,1을 배열에 넣을 생각을 하면 된다. 그리고 띄어쓰기 for문, 별의 개수 for문, 행 for문 등 여러 for문이 나오므..

    [2523번] 별 찍기 - 13

    [2523번] 별 찍기 - 13

    우선 처음에 중간에서 별을 적게 하는 방법으로 뭐가 있을까 고민을 해봤다. 그래서 생각해낸 것이 줄의 개수가 절반까지 오면 다시 줄어들도록 조건문을 써야겠다! 생각이 들어서 그후부터는 연산을 해보면서 조건문을 만들어냈고, 조건문 안에 다시 줄어드는 for문을 적었다! 결국 코드는 늘어나는 for문 + 조건문 + 줄어드는 for문 형식이다. import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i=1;i0;j--) { for (int k=0;k

    [10817번] 세 수

    [10817번] 세 수

    나는 배열의 각 값들을 비교해주어서 tmp변수로 재정렬을 해주는 식을 이용했다. import java.util.Scanner; public class Main { public static void main(String[] args) { int[] num = new int[3]; Scanner sc = new Scanner(System.in); int tmp; for (int i=0;i=c || c>=b && b>=a) num = b; else if (b>=a && a>=c || c>=a && a>=b) num = a; else num = c; System.out.println(num); sc.close(); } }

    [10039번]평균 점수  (Java)

    [10039번]평균 점수 (Java)

    이번 문제는 40점미만 받은 학생은 강제로 보충학습을 듣고 40점으로 점수를 매겨주고 학생들의 총 평균을 구하는 문제이다. 그래서 우선 1. 길이가 5인 배열을 생성해주고 2. 반복문을 돌면서 학생들의 성적을 입력하도록 했다. 3. 근데 만약 점수가 40점 미만이라면 40점으로 다시 저장해주고, 4. 평균을 구하고 출력하도록 한다. import java.util.Scanner; public class Main { public static void main(String[] args) { int[] grade = new int[5]; int sum=0; int avg; Scanner num = new Scanner(System.in); for (int i=0;i

    [5543번] 상근날드

    [5543번] 상근날드

    우선 햄버거와 음료를 따로 봐야할 것 같다. 각각 배열로 해주고, 각 배열에서 최솟값을 구하여 세트메뉴값으로 더해준 후, 50원을 빼주고 출력해주면 될 것같다. 최솟값 변수를 하나로 해결하고 싶었지만, 하나의 main함수에서만 코드를 짜기 때문에 두개의 최솟값 변수를 만들어 줬다. import java.util.Scanner; public class Main { public static void main(String[] args) { int[] hamburger = new int[3]; int[] beverage = new int[2]; int hammin=2000; int bevmin=2000; int setprice=0; Scanner price = new Scanner(System.in); for ..