본문 바로가기

greedy2

[백준] 2138번: 전구와 스위치 (Java) 1. 문제설명N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져있거나 꺼져있는 상태이다. i번 스위치를 누르면 i-1, i, i+1 의 세 개의 전구 상태가 바뀐다. 현재 상태와 반대로 바뀐다.N개의 전구들을 만들고자 하는 상태로 만들기 위해 스위치를 최소 몇 번 누르면 되는지 구하는 문제이다.시간 제한: 2초메모리 제한: 128MB 2. 접근 방식그리디 알고리즘을 사용한다.첫 번째 전구부터 순차적으로 처리한다.각 단계에서 현재 전구의 왼쪽 전구가 목표 상태와 다르면 현재 스위치를 누른다.첫 번째 스위치를 누르는 경우(curA)와 누르지 않는 경우(curB)를 고려한다.첫 번째 스위치의 상태가 이후의 모든 결정에 영향을 미치기 때문.두 번째 전구부터 현재 상태와 목표 상태를 비교하며 진행한다.i-1.. 2024. 10. 1.
[백준] 1138번: 한 줄로 서기 (Java) 1. 문제설명N명의 사람들은 한 줄로 서고, 사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. 각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 구한다.시간 제한: 2초메모리 제한: 128MB 2. 접근 방식줄을 나타내는 배열을 생성한다.키 작은 사람부터 차례로:자신보다 키 큰 사람이 몇 명 있는지 입력받음그 숫자만큼 빈자리 확보그 자리에 해당하는 사람을 배치배열 순서대로 출력한다. 3. 최종 코드import java.io.*;import java.util.StringTokenizer;public class Main public static void main(String[] args) throws IOException { BufferedReader br.. 2024. 9. 18.
반응형