회고/TIL TWL

TWL 코테 스터디 한주 후 배운 점

리콜 2024. 6. 5. 10:37

바킹독 코테 스터디 운영을 한주 해보았다.

총인원은 5명, 목요일에 모여 5문제 정하고 한문제 같이 푼뒤 

화요일에 모여 풀었던 문제를 발표한뒤 서로 푼 방식을 공유한다.

PR을 통해 코드 리뷰또한 진행한다.

 

문제 리스트

https://github.com/realcold0/Java_algorithm_study/blob/main/0x03/0x03.md

 

Java_algorithm_study/0x03/0x03.md at main · realcold0/Java_algorithm_study

자바로 준비하는 코딩테스트 스터디. Contribute to realcold0/Java_algorithm_study development by creating an account on GitHub.

github.com

 

https://github.com/realcold0/Java_algorithm_study/blob/main/0x04/0x04.md

 

Java_algorithm_study/0x04/0x04.md at main · realcold0/Java_algorithm_study

자바로 준비하는 코딩테스트 스터디. Contribute to realcold0/Java_algorithm_study development by creating an account on GitHub.

github.com

의 리드미 파일에서 선택된 문제 부분을 선정하여 풀었다.

 

 

문제 풀이 공유

https://realcold0.tistory.com/76

 

백준 1406번 에디터 - Java 자바

https://www.acmicpc.net/problem/1406 문제한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다.이 편집기에는 '커서

realcold0.tistory.com

https://realcold0.tistory.com/77

 

백준 5397번 키로거- 자바(Java)

https://www.acmicpc.net/problem/5397 문제창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하

realcold0.tistory.com

 

 

 

위 문제들을 풀때 ListIterator를 사용하였다.

Iterator는 자바 컬렉션 프레임 워크의 저장된 요소를 읽어오는 인터페이스 이다.

 

자바의 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있습니다.

 

ListIterator와 Iterator의 차이는 Iterator는 단방향, ListIterator는 양방향이라는 것이다.

ListIterator는 index와 index사이를 가리키는 포인터로서 커서와 같은 역할 이라고 보면 될 것같다.

next를 하면 오른쪽으로 긁으면서 요소를 읽어 올 수 있었다.

 

스터디원 중에서 다른 사람은 ListIterator을 사용하지 않고 문제를 해결하였는데

스택을 사용해서 해결 하였다.

 

왼쪽 오른쪽 , 두개의 스택을 만들어 abcd가 있다면 ab cd 이렇게 나누어 나눈 위치가 커서가 되는 것이다.

그뒤 오른쪽으로 모두 이동시킨뒤 꺼내어가면서 출력하였다.

 

생각치도 못한 방법이라 신기하였는데 두명이나 그렇게 만들어 ListIterator가 적용하기 어렵다면 사용해봐야 겠다고 생각했다.

 

 

https://realcold0.tistory.com/79

 

백준 1475 방번호 - 자바(Java)

https://www.acmicpc.net/problem/1475 문제다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.다솜이의 옆집에서는 플라스틱 숫자를 한 세트

realcold0.tistory.com

문제를 풀때 6과9를 처리하는 것이 핵심이었다.

다른 분 중 한분은 6과 9를 카운트하는 변수를 따로 만들어서

6과 9의 갯수를 합친뒤 %2를 하여서 홀수라면 /2 값에 +1을 하고 짝수라면 /2값을 count에 추가해주는 방식이었는데

이 방법도 내가 푼 방식과 비슷하지만 달라 흥미로웠다.

 

https://realcold0.tistory.com/80

 

백준 3273번 두 수의 합 -자바(Java)

https://www.acmicpc.net/problem/3273 문제n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai

realcold0.tistory.com

입력받은 숫자들을 배열에 넣고 정렬을 할때 for문을 사용하였었는데

다른분이 stream을 사용하였다.

stream을 숙달해야지 하면서 잘 생각이 안나게 되는 것 같다.

자꾸 익숙한 for문을 사용하게 되는데 

팀원들과 이야기 하여 다음에 문제를 풀때에는 stream을 사용하여 문제를 풀기로 하였다.

 

https://realcold0.tistory.com/78

 

1158번 요세푸스 문제 -자바(Java)

https://www.acmicpc.net/problem/1158 바킹독 연결 리스트 마지막 문제이다.문제요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제

realcold0.tistory.com

 

원형 연결 리스트를 생각해 인덱스를 관리하며 문제를 풀었었는데 다른분은 

for 문을 이용하여 이동하면서 문제를 풀었었다.

 

while(!list.isEmpty()) {
			for(int i=0; i<K; i++) {
				if(i == K-1) {
					if(list.size() == 1) sb.append(list.remove());
					else sb.append(list.remove() + ", ");
				} else {
					list.add(list.remove());
				}
			}
		}

 

 

이번주는 주제가 쉬워 두단원을 한번에 진행해 총 8문제를 푸었는데 이외의 문제들은 간단하다 생각해 발표를 진행하지 않았다.

https://realcold0.tistory.com/82

 

백준 2577번 숫자의 개수 - 자바(Java)

https://www.acmicpc.net/problem/2577 문제세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.예를 들어 A = 150, B =

realcold0.tistory.com

 

 

https://realcold0.tistory.com/83

 

백준 11328번 Strfry -자바(Java)

https://www.acmicpc.net/problem/11328 문제C 언어 프로그래밍에서 문자열(string)은 native한 자료형이 아니다. 사실, 문자열은 그저, 문자열의 끝을 표시하기 위한 말단의 NULL이 사용된, 문자들로 이루어진

realcold0.tistory.com

https://realcold0.tistory.com/81

 

백준 10808번 알파벳 갯수 - 자바 (Java)

https://www.acmicpc.net/problem/10808 문제알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오.입력첫째 줄에 단어 S가 주어진

realcold0.tistory.com

 

 

 

 

PR을 이용한 코드 리뷰

PR또한 진행하며 서로 코드 리뷰를 하는 방식을 배웠다.

https://github.com/woowacourse/woowacourse-docs/blob/main/reviewer/review-guide.md

 

woowacourse-docs/reviewer/review-guide.md at main · woowacourse/woowacourse-docs

우아한테크코스 문서를 관리하는 저장소. Contribute to woowacourse/woowacourse-docs development by creating an account on GitHub.

github.com

 

위의 글의 참고의 첫번째 링크 글을 참고하여 PR을 진행하였는데

하지만 다들 처음하다보니 comment나 제안을 진행해보면서 버벅이다보니 시간이 많이 흘러

하는 방법정도만 익히게 되었다.

 

다음 주차부터는 제대로 코드 리뷰 예정!!!

이번주에 한 PR을 공유합니다.

https://github.com/realcold0/Java_algorithm_study/pull/6

 

240604 이승환 0x03 0x04 풀이 by realcold0 · Pull Request #6 · realcold0/Java_algorithm_study

 

github.com

https://github.com/realcold0/Java_algorithm_study/pull/5

 

240604 문환희 0x03, 0x04 풀이 by HwanheeMoon · Pull Request #5 · realcold0/Java_algorithm_study

 

github.com

위에 링크가 내가 전송하였던 PR이고 밑에는 내가 리뷰한 PR이다.

밑에 링크와 같이 PR을 날린후 두명이 리뷰를 해주고 리뷰를 하면 PR을 날린 사람이 리뷰를 보고 반영을 하고 merge를 하는 방식으로 진행 될 예정이다.

 

PR에는 Comment로 댓글과 같이 이야기를 할 수 있고 Suggetion을 이용해 코드를 수정해주고

PR날린 사람이 Commit을 바로해 코드를 반영 시킬 수 있다는 것을 배웠다.

또한 PR규칙을 생성해 코드를 리뷰를 해주는 규칙을 만들어 줄 수 있었다.

 

 

반응형