수도코드(pseudocode)

SJW·2023년 1월 29일
0

수도코드(pseudocode)란?

  • 실제 코드를 작성하기 전 우리가 사용하는 언어로 작성할 코드의 흐름을 미리 작성한다.

수도코드를 쓰는 이유?

  • 나중에 디버깅 할때 편리하다.
  • 내가 작성한 코드를 다른 누군가가 유지보수를 하기가 편리하다.
  • 협업에 도움(?)이 될듯하다.

작성법?

(출처-https://seagull-dev.tistory.com/9)
작성 규칙 1 : 구체적 방법보다는 무슨 일을 할 것인가?만을 기술한다.
작성 규칙 2 : 입력, 치환, 산술, 관계, 논리, 출력의 기본기능 단위로 한번에 한가지만 기술한다.
작성 규칙 3 : 목적어 + 동사 형식으로 기술한다.
작성 규칙 4 : 처리단계 레벨은 되도록 3단계까지만 표현한다.(들여쓰기 3단계)

  • 여기까지가 대략적인(?) 작성법이고 정확히 정해진 작성법은 없는 것 같다.
  • 다른 사람이 봤을때 이 명령문이 어떤식으로 작성이 된건지 이해하는데 도움이 된다면 좋을듯하다.
  • ex) 내가 처음부터 수도코드를 작성한건 아니고 문제를 풀다가 레퍼런스 코드를 봤는데 이해가 안가서 주석처리를 하면서 명령어 한줄한줄의 의미를 작성해봤다.
    수도코드가 대략 이런 느낌이지 않을까?? 라고 생각한다.(틀린 부분이 많다....)

public class Solution {
public int[] getEvenNumbers(int[] arr) {
int[] concatArray = new int[]{}; // 비어있는 배열 concatArray를 만들겠다. int[] concatArray = {};

if(arr.length == 0) { // 만약 입력되는 arr의 배열의 길이가 0이라면
  return new int[]{}; //  빈 배열을 반환한다.
}

for(int i = 0; i < arr.length; i++) { 반복문 for 초깃값:= 0; 조건식:i가 입력값 배열 arr의 길이보다 작을동안 작을동안 반복한다., 증감식:i의 크기는 1씩 늘어난다.
  if(arr[i] % 2 == 0) { // 만약 arr의 인덱스 i를 2 나눈것의 나머지 0이라면 즉, arr[i]가 짝수라면 
    concatArray = Arrays.copyOf(concatArray, concatArray.length + 1); //concatarray = (위에서 선언했던 기존) int [] concatArray = new int[1]; 
    concatArray[concatArray.length - 1] = arr[i];                    // concatArray[1-1] = arr[i]; --> arr[0] = concatArray[0];
  }
}

return concatArray; // 짝수가 아닐 경우 처음 선언했던 비어있는 배열반환.

}

int [] arr = {1,2,3,4};

for(int i = 0; i<4; i++){
arr[0]의 나머지0이 아니다 ->return concatArray;(처음 선언했던 배열) -->즉,{} 빈 배열 반환

for(int i = 0; i<4; i++){
arr[1] % 2 == 0 이다. concatArray = new int[1];
concatArray[0] = arr[1];

for(int i = 0 ; i < 4; i++){
arr[2] % 2 == 0 아니다. 빈 배열 반환

for(int i = 0 ; i < 4; i++){
arr[3] % 3 == 0 이다. concatArray = new int [2]
concatArray[1] = arr[3];
결국
return concatArray;
로 [ concatArray[0] = arr[1]; , concatArray[1] = arr[3]}

0개의 댓글