본문 바로가기
Coding Test/FASTCAMPUS

패스트캠퍼스 Java 코딩테스트 강의 2주차

by 챠챠12 2023. 4. 29.

 

시간복잡도에 관해서 공부를 했다. 어느 정도 시간복잡도에 대해서 개념은 알고 있기 때문에 바로 문제를 푸는 것으로 넘어갔다. 

해당 문제가 시간복잡도에 대한 문제라는 것을 미리 알고 봤기 때문에

문제 푸는 방법을 고민하는 게 시간복잡도를 고려해야겠다는 생각을 하고 풀었다.

 

문제 풀면서 시간복잡도를 고려하면서 풀어보려고 했다고 하지만, 규칙성을 찾아야되는데

찾기가 쉽지 않았다. 경험이 부족하다는 생각이 제일 먼저 들었다. 

그리고 항상 시간복잡도 규칙성 찾아가는 예시? 방식? 같은 것을 눈으로 보고 싶긴 했었다. 

이번에 강의에서 내가 원했던 것을 얻은 느낌? 이었다.

 

해당 문제를 여러 번 풀어보면서 완벽하게 이해를 해보고, 앞으로 시간복잡도의 문제를 접했을 때

어떤 방식으로 접근해야 되며 풀어가야 하는지 가이드가 되는 강의였다. 

 

강의 초반 부분이긴 하나 일단은 열심히 끝까지 완강을 해봐야겠다. 

일단은 해보는거야ㅑ

 

시간복잡도 란 : 입력 크기와 알고리즘간의 관계 
       - 알고리즘의 복잡도를 나타내는 지표 중 하나
       - 입력 크기에 대해 프로그램의 동작시간을 가늠해볼 수 있는 수단

 

02 시간복잡도

문제 풀기 :

백준 10158 개미 - https://www.acmicpc.net/problem/10158

왼쪽 문제를 풀기 위해서 하나씩 해보는 과정                                 오른쪽 실습 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int W = sc.nextInt(); 
        int H = sc.nextInt();
        int P = sc.nextInt();
        int Q = sc.nextInt();
        int T = sc.nextInt();

        int timeX = T % (2*W);
        int currentX = P;
        int deltaX = 1;
        while(timeX-- > 0){
            if(currentX == W) deltaX = -1;
            else if(currentX == 0) deltaX = 1;
            currentX += deltaX;
        }
        
        int timeY = T % (2*H);
        int currentY = Q;
        int deltaY = 1;
        while(timeY-- > 0){
            if(currentY == H) deltaY = -1;
            else if(currentY == 0) deltaY = 1;
            currentY += deltaY;
        }
        System.out.println(currentX + " " + currentY);
        
    }
    
}

 

 

 "본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다."

수강중인 강의 상세페이지 링크

https://fastcampus.co.kr/dev_online_codingtest

 

LIST

댓글