쵼쥬
쵼쥬의 개발공부 TIL
쵼쥬
전체 방문자
오늘
어제
  • 분류 전체보기 (276)
    • 코딩테스트 (192)
      • [알고리즘] 알고리즘 정리 (7)
      • [백준] 코딩테스트 연습 (126)
      • [프로그래머스] 코딩테스트 연습 (59)
    • Spring (71)
      • [인프런] 스프링 핵심 원리- 기본편 (9)
      • [인프런] 스프링 MVC 1 (6)
      • [인프런] 스프링 MVC 2 (4)
      • [인프런] 실전! 스프링 부트와 JPA 활용1 (7)
      • [인프런] 실전! 스프링 부트와 JPA 활용2 (5)
      • [인프런] 실전! 스프링 데이터 JPA (7)
      • [인프런] 실전! Querydsl (7)
      • JWT (5)
      • [인프런] Spring Cloud (17)
      • [인프런] Spring Batch (4)
    • Java (6)
      • [Java8] 모던인자바액션 (4)
      • [부스트코스] 웹 백엔드 (2)
      • [패스트캠퍼스] JAVA STREAM (0)
    • CS (6)
      • 디자인 패턴과 프로그래밍 패터다임 (2)
      • 네트워크 (4)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • BFS
  • 스프링
  • 타임리프
  • 비트마스킹
  • 인프런
  • 백준
  • 위클리 챌린지
  • spring
  • 코딩테스트
  • querydsl
  • Spring Data JPA
  • jpa
  • 구현
  • 알고리즘
  • 부스트코스
  • 자바
  • 백분
  • 누적합
  • 프로그래머스
  • MVC

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쵼쥬

쵼쥬의 개발공부 TIL

추석 트래픽
코딩테스트/[프로그래머스] 코딩테스트 연습

추석 트래픽

2021. 10. 21. 23:50


풀이 방법

먼저 주어진 문자열을 나눠서 시간을 int로 나타내서 계산해주었다. 

각 범위를 계산해 주기 위해 변화가 있는 로그가 시작하고 끝나는 모든 지점에서 1초 범위로 속하는 로그들의 개수를 세어주었다.

범위에 속하기 위해

  1. 시작점이 범위 안에 들어 있는 경우 
  2. 끝나는 지점이 범위 안에 들어 있는 경우
  3. 시작점과 끝나는 지점이 범위보다 클 경우 

이 세가지 경우를 생각해서 count해 주었다.

 

 

내 코드

import java.util.*;

class Solution {
    public int solution(String[] lines) {    
        int[][] array = new int[lines.length][2];
        
        for(int i = 0 ; i < lines.length; i++){
            double x = 60 * 60 * Integer.parseInt(lines[i].substring(11, 13)) + 60 * Integer.parseInt(lines[i].substring(14, 16)) + Integer.parseInt(lines[i].substring(17, 19)) + Double.parseDouble("0." + lines[i].substring(20, 23));
            double y = Double.parseDouble(lines[i].substring(24, lines[i].length()-1));

            array[i][0] = (int)(1000 * x - 1000 * y + 1);
            array[i][1] = (int)(1000 * x);
                        
            if(array[i][0] < 0)
                array[i][0] = 0;
        }
        
        int max = 0;
        
        for(int i  = 0 ; i < array.length; i++){
            
            for(int k = 0; k< 2; k++){
                int count = 0;
                
                for(int j = 0; j < array.length; j++){
                    if(array[i][k] <= array[j][0] && array[i][k] + 999 >= array[j][0] 
                    || array[i][k] + 999 >= array[j][1] && array[j][1] >= array[i][k] 
                    || array[i][k] >= array[j][0] && array[i][k] + 999 <= array[j][1])
                        count++;

                }
                max = Math.max(max, count);
            }
        }
        
        return max;
    }
}

'코딩테스트 > [프로그래머스] 코딩테스트 연습' 카테고리의 다른 글

가장 먼 노드  (0) 2021.10.22
순위  (0) 2021.10.22
아이템 줍기  (0) 2021.10.20
교점에 별 만들기  (0) 2021.10.17
뉴스 클러스터링  (0) 2021.10.08
    '코딩테스트/[프로그래머스] 코딩테스트 연습' 카테고리의 다른 글
    • 가장 먼 노드
    • 순위
    • 아이템 줍기
    • 교점에 별 만들기
    쵼쥬
    쵼쥬

    티스토리툴바