모각코

모각코 5회차 회고

mountfog 2025. 8. 3. 16:24

2025/08/03 13:00~16:00
목표:
1.백준 단계별로 풀어보기 문제 2개

  -1181(단어 정렬), 10814(나이순 정렬)
2.유니티 개인 프로젝트 진행

 

1.백준 단계별로 풀어보기 문제 2개

-1181(단어 정렬), 10814(나이순 정렬)

-둘 다 정렬 문제, 병합 정렬 알고리즘을 사용하여 풀이

import java.util.*;
import java.io.*;

public class Main { //1181 단어정렬

   public static void main(String[] args) throws IOException{
	      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	      StringBuilder sb = new StringBuilder();
	      int n = Integer.parseInt(br.readLine());
	      String[] x = new String[n];
          int realn = 0;
	      for(int i=0;i<n;i++) {
              String str = br.readLine();
              boolean isClean = true;
              for(int j=0;j<realn;j++){
                  if(x[j].equals(str)){
                      isClean = false;
                  }
              }
              if(isClean){
                  x[realn] = str;
                  realn++;
              }
	      }
          String[] realx = new String[realn];
          for(int i=0;i<realn;i++){
              realx[i] = x[i]; 
          }
          merge_sort(realx);
          for(int i=0;i<realn;i++){
              sb.append(realx[i] + "\n");
          }
	      System.out.print(sb);
   } 
	private static String[] sortedx;
	public static void merge_sort(String[] x) {
		
		sortedx = new String[x.length];
		merge_sort(x, 0, x.length - 1);
		sortedx = null;
	}
	private static void merge_sort(String[] x, int left, int right) {	
		if(left == right) return;
		
		int mid = (left + right) / 2;	
		
		merge_sort(x, left, mid);		
		merge_sort(x, mid + 1, right);	
		
		merge(x, left, mid, right);		
		
	}
	private static boolean Dictionary(String a, String b) {
		boolean same = false;
		for(int i=0;i<a.length();i++) {
			if(a.charAt(i) == b.charAt(i)) {
				continue;
			}
			else if(a.charAt(i) < b.charAt(i)) {
				return true;
			}
			else {
				return false;
			}
		}
		return same;
	}
	private static void merge(String[] x, int left, int mid, int right) {
		int l = left;		// 왼쪽 부분리스트 시작점
		int r = mid + 1;	// 오른쪽 부분리스트의 시작점 
		int idx = left;		// 채워넣을 배열의 인덱스
		
		
		while(l <= mid && r <= right) {
			if(x[l].length() < x[r].length() || 
            (x[l].length() == x[r].length() && Dictionary(x[l],x[r]))) {
				sortedx[idx] = x[l];
				idx++;
				l++;
			}
			else {
				sortedx[idx] = x[r];
				idx++;
				r++;
			}
		}
		if(l > mid) {
			while(r <= right) {
				sortedx[idx] = x[r];
				idx++;
				r++;
			}
		}
		else {
			while(l <= mid) {
				sortedx[idx] = x[l];
				idx++;
				l++;
			}
		}
		for(int i = left; i <= right; i++) {
			x[i] = sortedx[i];
		}
	}
}
import java.util.*;
import java.io.*;

public class Main { //10814 나이순 정렬
   public static void main(String[] args) throws IOException{
	      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	      StringBuilder sb = new StringBuilder();
	      int n = Integer.parseInt(br.readLine());
	      int[] x = new int[n];
          String[] y = new String[n];
	      for(int i=0;i<n;i++) {
	    	  StringTokenizer st = new StringTokenizer(br.readLine());
              x[i] = Integer.parseInt(st.nextToken());
              y[i] = st.nextToken();
	      }
          merge_sort(x,y);
          for(int i=0;i<n;i++){
              sb.append(x[i] + " " + y[i] + "\n");
          }
	      System.out.print(sb);
   } 
	private static int[] sortedx;
	private static String[] sortedy;
	public static void merge_sort(int[] x,String[] y) {
		
		sortedx = new int[x.length];
        sortedy = new String[y.length];
		merge_sort(x,y, 0, x.length - 1);
		sortedx = null;
	}
	private static void merge_sort(int[] x, String[] y, int left, int right) {	
		if(left == right) return;
		
		int mid = (left + right) / 2;	
		
		merge_sort(x,y, left, mid);		
		merge_sort(x,y, mid + 1, right);
		
		merge(x,y, left, mid, right);		
		
	}
	
	private static void merge(int[] x,String[] y, int left, int mid, int right) {
		int l = left;		
		int r = mid + 1;	
		int idx = left;		
		
		
		while(l <= mid && r <= right) {

			if(x[l] <= x[r]) {
				sortedx[idx] = x[l];
                sortedy[idx] = y[l];
				idx++;
				l++;
			}

			else {
				sortedx[idx] = x[r];
                sortedy[idx] = y[r];
				idx++;
				r++;
			}
		}
		if(l > mid) {
			while(r <= right) {
				sortedx[idx] = x[r];
                sortedy[idx] = y[r];
				idx++;
				r++;
			}
		}
		else {
			while(l <= mid) {
				sortedx[idx] = x[l];
                sortedy[idx] = y[l];
				idx++;
				l++;
			}
		}
		for(int i = left; i <= right; i++) {
			x[i] = sortedx[i];
            y[i] = sortedy[i];
		}
	}
}

2. 유니티 개인 프로젝트 진행

-게임 플레이 스크립트들

    -플레이어가 쓰는 자원들을 관리하는 InventoryMgr 작성

    -캐릭터 관련 ActorInfo, Character, CharacterMgr스크립트 추가 작성(스킬 관련)

-UI 스크립트들

    -캐릭터 관련 정보 CharacterInfoDlg 스크립트 추가 작성

    -인벤토리 정보 보여주는 InventoryItemDlg 스크립트 작성

'모각코' 카테고리의 다른 글

모각코 6회차 회고  (1) 2025.08.10
모각코 6회차 목표  (0) 2025.08.10
모각코 5회차 목표  (0) 2025.08.03
모각코 4회차 회고  (3) 2025.07.27
모각코 4회차 목표  (1) 2025.07.27