BEYOND SW 캠프 15기 / 5주차 회고

Wish·2025년 2월 23일

BEYOND SW15

목록 보기
6/12
post-thumbnail

TIL(This week I Learned)

  1. Java 개요
  2. Java 클래스와 메소드 그리고 구성요소

확실히 두 번째 배우는 내용이라 그런지 처음 자바에 대해 배울 때보다 더 이론적으로도 이해가 잘 되는 것 같다. 강사님께서 세세하게 설명을 잘 해주셔서 크게 신경쓰지 않았던 요소들에 대해서도 집중을 더 잘 할 수 있었다.

Facts

1. 백준 코딩테스트 스터디

1차 프로젝트가 끝나고 생긴 시간에 각자 필요한 스터디 모임을 구성하면 좋을 것 같다고 강사님이 얘기해주셨다. 그래서 같이 프로젝트를 했던 팀원 몇 명과 같은 수업을 듣는 한 명과 함께 백준 코딩테스트 스터디를 시작했다. 내가 깃 레포지토리를 생성해서 스터디원들을 초대했는데, 인텔리제이로는 깃허브 연동을 처음 하다보니 오류가 자꾸 발생했다. 알고보니 설정에 깃 실행 path를 잘못 연결해서 발생했던 오류였다. 별 거 아닌 일에 시간을 소요해서 아쉬웠지만 그래도 다음부터는 실수 할 일이 없어서 다행인건가 싶은 생각도 들었다.
우선 이번주에는 class1 문제 36개를 풀기로 했다. 아무래도 개개인의 스케줄이 다르다 보니 모여서 코드리뷰를 하는 시간을 갖는 것에는 협의가 필요하겠지만, 우선은 각자의 공부 진도를 서로 확인하는 것에 의의를 두고 있다. 나는 여지껏 문제를 해결하는 데에만 초점을 두고 있었는데, 다른 분들의 코드를 보니 이왕 공부할 때 좀 더 효율적이고 클린한 코드를 작성할 수 있도록 노력해야겠다는 생각이 들었다.

2. 데이터 중심 애플리케이션 설계 독서

귀가 시간에 개발관련 이론 서적을 읽으려고 하니 너무 졸려서 아침에 학원에 도착 후 남는 시간(대략 20분 ~ 30분 정도)에 독서하는 것으로 계획을 변경했다. 확실히 지하철에서 읽을 때보다는 집중이 잘 되는 것 같다.

3. Java 문제 풀이

Java 강의 한 파트가 마무리 될 때마다 강사님이 실습문제를 내주셨다. 주어진 시간 내에 푸는 것에는 크게 어려움이 없었다. 다만, 실제 업무를 할 때처럼 기능별로 메소드를 나눠서 코드를 짜는 습관을 들여야 할 것 같다.

Findings

Java 문제풀이를 할 때 최대한 그 날 배운 내용을 활용해서 코드를 짜보려고 했다. 어떤 언어든 알고리즘으로 이미 생성되어 있는 클래스의 메소드들도 결국에는 수도코드로 표현 할 수 있어야 한다고 생각한다. 기억에 남는 문제를 예로 들어보겠다.

문제) 문자열을 하나 입력받아 문자 자료형 배열로 바꾼 뒤 검색할 문자를 하나 입력 받아 입력 받은 검색할 문자가 문자열에 몇개 있는지를 출력하세요.
해결방법 1)
1. 문자열을 charArray로 변경한다.
2. 변경한 Array를 for문으로 돌면서 입력받은 문자와 비교한다.
3. 두 문자가 일치하면 count 변수의 값을 +1 한다.
 Scanner sc = new Scanner(System.in);
 System.out.print("문자열을 하나 입력하세요 : ");
 String str = sc.nextLine();
 char[] chArr = str.toCharArray();
 System.out.print("검색할 문자를 입력하세요 : ");
 char key =  sc.next().charAt(0);
 int count = 0;

 for (char c : chArr) {
     if(c == key) {
         count ++;
     }
 }
해결방법 2)
1. 문자열을 String.split() 메소드를 사용해서 문자열 배열로 변경한다.
2. Collections 클래스의 frequency 메소드를 사용하여 List 타입으로 변환한 문자열 배열에 String으로 변경한 해당 값이 몇번이나 나타나는지 확인한다.
 String[] strArr = str.split("");
 int count2 = Collections.frequency(Arrays.asList(strArr), String.valueOf(key));

위처럼 우선은 최대한 논리 표현을 할 수 있는 방법으로 문제를 풀고 이러한 알고리즘 기능을 담당하고 있는 클래스 메소드를 찾아서 한 번 더 풀어보는 것이 훨씬 더 문제를 해결하는 데 도움이 되는 것 같다.

Future

물론 문제를 풀다보면 분명 귀찮아져서 문제 해결을 위한 클래스 메소드들을 바로 적용해서 풀고 싶어질 때가 올 것이 분명하다. 하지만 그렇게 풀었던 문제들일지라도 다시 한 번 수도코드로 해결해봐야겠다. 클래스 메소드를 사용하면 코드량이 줄어들어서 보기에도 편하고 유지보수할 때도 좀 더 편하기는 하겠지만, 항상 성능이 더 좋은 것도 아니고 지금은 공부하는 단계이니 빠른 문제 해결보다는 원리를 이해하는 것에 초점을 맞추는 것이 나에게 더 도움이 될 것 같다.

For ME🍀

귀찮은 일을 해내야 행복할 수 있다. 😆

profile
원하는 것을 이뤄가는 중 🍀

1개의 댓글

comment-user-thumbnail
2025년 2월 24일

오.. 귀찮은일을 해내시는 것을 보니! 행복하실것 같네요 !! ㅋ

답글 달기