분류 전체보기 139

백준 No.10610 30 - JAVA

https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제 어느날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라 문제 풀이 - 일단 30으로 나누어지는 조건을 따져본다. -> 3의 배수는 해당 자리 순을 더했을 때 3으로 나누어 떨어진다 ->..

알고리즘 2023.02.20

백준 No.1049 기타줄 - JAVA

문제 Day Of Mourning 의 기타리스트 강토가 사용하는 기타에서 N개의 줄이 끊어졌다. 따라서 새로운 줄을 사거나 교체해야한다. 강토는 되도록이면 돈을 적게 쓰려고 한다. 6줄을 패키지를 살 수도 있고, 1개 또는 그 이상의 줄을 낱개로 살 수도 있다. 끊어진 기타줄의 개수 N과 기타줄 브랜드 M개가 주어지고, 각각의 브랜드에서 파는 기타줄 6개가 들어있는 패키지의 가격, 낱개로 살 때의 가격이 주어질 때, 적어도 N개를 사기 위해 피룡한 돈의 수를 최소로 하는 프로그램을 작성하시오. 4 2 12 3 15 4 어려웠던 점 처음에 두개의 값이 주어지기 때문에 2차원 배열로 접근했다. new int[M][2] 이렇게 접근했는데 문제를 풀 수 없었다... 둘 다 최소일 수가 없었다..... 풀이 - ..

알고리즘 2023.02.17

백준 No.2217 로프 - JAVA

문제 N 개의 로프가 있따. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. 2 10 15 풀이 - 처음에 로프의 제일 작은 값으로 하려 했다. 그러면 모두 무게를 나눠가지며 할 수 ..

알고리즘 2023.02.17

백준 No.1946 신입사원 - JAVA

문제 언제나 최감ㄴ을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와 2차 면접시험으로 이루어진다. 최고만을 지향한다는 기업의 이념에 따라 그들은 최고의 인재들만을 사원을 선발하고 싶어한다. 그래서 진영 주식회사는, 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다. 즉, 어떤 지원자 a의 성적이 다른 지원자 b의 성적에 비해 서류심사 결과와 면접 성적이 선발되지 않는다. 이러한 조건을 만족시키면서, 진영 주식회사가 이번 신규사원 채용에서 선발할 수 있는 신입사원의 최대 인원수를 구하는 프로그램을 작성하시오 2 5 3 2 1 4 4 1 2 3 5 5 7 3 6 ..

알고리즘 2023.02.16

SpringSecurity - UsernamePasswordAuthenticationFilter

Spring Security에서 FormLogin 방식으로 로그인 할 경우 먼저 SecurityFilterChain 설정 메소드에서 각종 설정 변경하기 http .formLogin() .loginPage("/login") .defaultSuccessUrl("/")//로그인성공 .failureUrl("/login")//로그인실패 .usernameParameter("email")//html name 설정 .passwordParameter("password")//html name 설정 .loginProcessingUrl("/login/process") //로그인 form action url .successHandler(new AuthenticationSuccessHandler() { @Override publ..

Spring Security 2023.02.15

백준 No.5545 최고의 피자 - JAVA

문제 상근이는 근처 피자 가게에서 매일 저녁으로 피자를 배달해 먹는다. 주머니 사정이 얇아진 상근이는 이번 달부터 "최고의 피자"를 구매하려고 한다. 최고의 피자란\, 피자 가게에서 주문할 수 있는 피자 중 1원당 열량이 가장 높은 피자를 말한다. 최고의 피자는 여러 종류가 있을 수도 있다. 이 피자 가게는 토핑 N개에서 여러 종류를 선택해서 주문할 수 있다. 같은 종류의 토핑을 2개 이상 선택할 수는 없다, 또 토핑을 전혀 선택하지 않을 수도 있다. 선택한 토핑은 도우 위에 올라간다. 도우의 가격은 A원이고, 토핑의 가격은 모두 B원이다. 피자의 가격은 도우와 토핑의 가격의 합계가 된다. 증 토핑을 k종류 선택했다면 피자의 가격은 A+B*k원이 된다. 피자의 열량은 도우와 토핑의 열량의 합이다. 도우의..

알고리즘 2023.02.15

백준 No.1246 온라인 판매 - JAVA

문제 경래는 닭을 기르는데 올 겨울 달걍 풍년으로 함박 웃음을 짓고 있다. 그리고 이 달걀을 영양란을 둔갑하여 옥션에 판매하려한다. 경래는 총 N개의 달걀이 있고, 그의 잠재적은 고객은 총 M명이다. 그리고 i번쨰 고객은 각자 달걀 하나를 P 가격 이하로 살 수 있다고 밝혔다. 경래는 영양란이라 속인 죄책감에 한 고객에게 두 개 이상의 달걀은 팔지 않기로 하였다. 하지만 위의 규칙 하에 수익은 최대로 올리고 싶기에 얼마로 팔지 고민하고 있다. 즉 A가격에 달걀을 판단고 하면 P가 A가격보다 크거나 같은 모든 고객은 달걀을 산다는 뜻이다. (물론 달걀 총 수량을 초과하여 팔 수는 없다.) 문제는 이러한 경래를 도와 최대 수익을 올릴 수 있는 달걀의 가장 낮은 가격을 책정하는 것이다. 입력 첫째 줄에 정수 ..

알고리즘 2023.02.14

백준 No.1449 수리공 항승 - JAVA

https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 문제 항승이는 품질이 심각하게 나쁜 수도 파이프 회사의 수리공이다. 항승이는 세준 지하철 공사에서 물이 샌다는 소식을 듣고 수리를 하러 갔다. 파이프에서 물이 새는 곳은 신기하게도 가장 왼쪽에서 정수만큼 떨어진 거리만 물이 센다. 항승이는 길이가 L인 테이프를 무한개 가지고 있다. 항승이는 테이프를 이용해서 물을 막으려고 한다. 항승이는 항상 물을 막을 때, 적어도 그 위치의 좌우..

알고리즘 2023.02.13

백준 No.2606 바이러스 - JAVA

문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번의 컴퓨터는 1번 컴퓨터와 네트워크 상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. ㅇ어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의..

알고리즘 2023.02.13

백준 No.24444 알고리즘 수업 - 너비 우선 탐색 1 - JAVA

문제 오늘도 서준이는 너비 우선 탐색(BFS) 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 정점과 M개의 간선으로 구성된 무방향 그래프(undirected graph)가 주어진다 정점 번호는 1번부터 N 번이고 모든 간선의 가중치는 1이다. 정점 R에서 시작하여 너비 우선 탐색을 노드를 방문할 경우 노드의 방문 순서를 출력하자 인접 정점은 오름차순으로 방문한다. 풀이 1. Queue를 생성한다. 2. Queue에 시작 노드 번호를 add 한다. 3. visited 배열에도 시작노드를 방문처리한다. 4. result배열을 만든다. --> 인덱스가 각 노드이고 순서를 지정한다. (3번 인덱스에 4가 들어가면 3번 노드는 4번째로 방문한다는 뜻임) 5..

알고리즘 2023.02.12