본문 바로가기
  • Adillete
【스터디노트】/▷TIL

99클럽 코테 스터디 10일차 TIL + 오늘의 학습 키워드 해시

by 아딜렛 2025. 4. 11.


- 오늘의 학습 키워드 해시
- 공부한 내용 본인의 언어로 정리하기

 

시간 복잡도 : O(n)

해시맵의 모든값을 확인하는데 최악의 경우 O(n)

x좌표가 같은 점이 몇개인지 세기

y 좌표가 같은점이 몇개인지 세기

2개 이상의 점이 있는 좌표값만 고려하여 직선의 수 계산

x축에 평행한 직선은 같은 y 좌표를 가진 점을 지난다.

y축에 평행한 직선은 같은 x 좌표를 가진 점을 지난다.

 

수도코드

함수 평행선 개수 세기(points[][]):
	x좌표 맵= 빈 해시맵; x 좌표-> 해당 x 좌표를 가진 점의 개수
    y좌표 맵= 빈 해시맵; y 좌표-> 해당 y 좌표를 가진 점의 개수
    
    for(각점 in points)
    x좌표맵[x]++;
    y좌표맵[y]++;
    
    직선 개수 =0;
    for 각 좌표 x in 좌표맵:
    	if x 좌표맵[x] >=2: //같은 x 좌표를 가진 점이 2개 이상이면 
        직선 개수 ++;
        
    for 각 좌표값 y in y좌표맵:
    	 if y 좌표맵[y>=2] //같은 y 좌표를 가진 점이 2개 이상이면
         직선개수 ++
         
         return 직선개수


- 오늘의 회고
  - 어떤 문제가 있었고, 나는 어떤 시도를 했는지

for 문으로 x 좌표 점의 개수를 가져오는데 

자료형이 다른 문제가 발생했다. 

 

  public static int countParallelLines(int[][] points){
        //x좌표와 y좌표로 점의 개수를 세기 위한 해시맵
        Map<Integer,Integer> xcords = new HashMap<>();//x좌표-> x좌표를 가진 점의 개수
        Map<Integer,Integer> ycords= new HashMap<>();//y좌표->y 좌표를 가진 점의 개수

        for(int[] point: points){
            int x = point[0];
            int y= point[1];

 

points 는 int[] 가 자료형이고 point 는 int 값을 가져오는 목적이었는데 까먹고 int x= points[0]; 을 해서 자료형 컴파일 에러났다.
  - 어떻게 해결했는지

ide 에서 나오는 에러 표시 보고 자료형 다른것 찾았다.
  - 무엇을 새롭게 알았는지

points 배열

2차원 배열

points[0][0] 첫번째점의 x 좌표

points[0][1] 첫번째점의 y 좌표

point[i][0] = sc.nextInt(); "i 번째 점의 x 좌표 값을 입력 받아 저장한다."


  - 내일 학습할 것은 무엇인지