관리 메뉴

제뉴어리의 모든것

[Section2] [코딩 테스트 준비] 자료구조 - 의사코드 본문

코드스테이츠/정리 블로깅

[Section2] [코딩 테스트 준비] 자료구조 - 의사코드

제뉴어리맨 2022. 7. 29. 15:10

의사코드란

의사코드란 프로그래밍을 작성하기 전에 자연스런 사람의 언어로 작성된 코드.적절한 코드도 추가하여도 좋다.

 

의사코드 예제

문제 : 수를 요소로 갖는 배열을 입력받아, 각 요소들이 그 이전의 요소들의 합보다 큰지를 확인하여서, 크지 않은 경우가 발생한 경우 false를 리턴한다. 발생하지 않은 경우는 true를 리턴한다. (단 수열은 음수나 0의 값이 들어오진 않는다)

 

  • 문제 접근 방법
    1. 인풋, 아웃풋이 무엇인지 인지한다.
    인풋 : 숫자가 들어있는 배열,
    아웃풋 : 이전수열의 합이 현재 요소보다 크거나 같다면 false, 반대는 true

    2. 문제에서 검사를 하라고 한 조건을 어떻게 확인할 것인가 생각해본다.

    1차적으로 수열에 각 요소에 접근하여야한다.
    그러므로 for문 사용을 염두해야한다.
    그리고 그 반복문을 어디까지 돌려야할지 생각해본다. (마지막 요소까지 검사하여야 하기때문에 마지막까지)

    3. 접근한 요소의 이전 요소들의 합을 어떻게 구할지 생각해본다

    4. 이전 요소들의 합과 현재 요소의 크기를 비교할 조건문을 어디에 사용해야할지 생각해본다.



  • 실제 내가 작성한 의사코드
이전요소 합 변수 선언

배열의 모든 요소를 가지고 오는 반복문 시작
   만약 현재 요소가 이전 수열의 합보다 작거나 같다면
    	false 리턴
    그렇지 않다면
    	이전 수열의 합에 현재 요소를 더한다.
반복문이 끝난다.

(false를 리턴하는 조건에 안걸렸으므로) true를 리턴한다

 

  • 의사코드를 반영한 실제 JAVA 코드
public class JustPractice4 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,4,8,20,10};

        System.out.println(checkPreSum(arr));
    }

    public static boolean checkPreSum(int[] arr) {

        int preSum = 0; //이전 수열의 합

        for (int i : arr) { //배열의 모든 요소를 가지고 오는 반복문 시작
            if(i <= preSum) return false; //이전 요소들의 합보다 작은 요소 발견시, false 리턴
            else preSum += i; //조건에 걸리지 않은 경우 이전 요소합에 현재 요소 더함
        }
        return true; //true 리턴
    }
}