본문 바로가기

분류 전체보기

(239)
[SWEA] 암호생성기 👀 문제 설명 문제 로그인해야 문제를 볼 수 있다. ✍🏻풀이 큐를 사용해서 풀었다. 큐에 수를 차례대로 넣고, cnt값을 사용해 암호를 생성한다. cnt의 초기값을 1로 두고, 암호를 생성할 때마다 cnt + 1을 해준다. 만약, cnt가 6보다 크거나 같으면 cnt를 1로 바꾼다. (cnt는 1~5만 가능) 그리고, cnt를 사용해 queue.poll() - cnt가 0보다 크거나 같을 동안 queue.poll() - cnt한 값을 다시 queue에 넣어준다. (맨 뒤로 보내기) 위 과정은 queue.poll() - cnt가 0보다 작거나 같을 때 끝난다. 코드 package swea; // 암호생성기 (https://swexpertacademy.com/main/code/problem/problemDe..
[SWEA] 괄호 짝짓기 👀 문제 설명 문제 로그인해야 문제를 볼 수 있다. ✍🏻풀이 Stack을 사용해 풀면 된다. 가장 먼저, 입력받은 String str의 첫 글자를 스택에 넣는다. 그리고, str 인덱스의 1부터 str.length - 1까지 for문을 사용해 접근하면서, 스택의 top값과 str.charAt(i)가 짝을 이루고 있는지 확인한다. 만약, 짝을 이루고 있다면, 스택을 pop하고, 다음으로 넘긴다. 짝을 이루고 있지 않다면, str.charAt(i)를 스택에 add 하면 된다. 코드 package swea; // [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 (https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14eW..
[SWEA] 파리 퇴치 👀 문제 설명 문제 로그인해야 문제를 볼 수 있다. ✍🏻풀이 시작점 (0, 0)부터 (N-M, N-M)까지 돌면서, 그 안에서 M * M 크기의 배열을 또 돌면 된다. M * M 크기의 배열 안에 있는 값들을 다 더해주고, 그 중 최댓값을 출력하면 된다. 코드 package swea; //파리 퇴치 (https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PzOCKAigDFAUq&categoryId=AV5PzOCKAigDFAUq&categoryType=CODE&problemTitle=%ED%8C%8C%EB%A6%AC+%ED%87%B4%EC%B9%98&orderBy=FIRST_REG_DATETIME&selectCodeL..
[SWEA] 농작물 수확하기 👀 문제 설명 문제 로그인해야 문제를 볼 수 있다. ✍🏻풀이 N / 2를 기준으로 두고 문제를 풀면 된다. 예를 들어, 7 * 7 농장의 경우, 수확하지 않는 부분이 3 3 2 2 1 1 0 0 1 1 2 2 3 3 이므로, 모두 가운데 기준으로 양쪽 대칭을 구하면 된다. 이 때, 대칭을 구하기 위해 extraNum 변수를 사용해서 위의 수확하지 않는 부분을 처리해주면 된다. 코드 package swea; // 농작물 수확하기 (https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB&categoryId=AV7GLXqKAWYDFAXB&categoryType=CODE&problemTitle=%EB..
[SWEA] 상호의 배틀필드 👀 문제 설명 문제 로그인해야 문제를 볼 수 있다. ✍🏻풀이 그대로 구현하면 되는 문제이다. 전차가 움직이는 메서드 move와, 포탄을 발사하는 메서드 shoot을 따로 생성했다. move에 매개변수로 동작(U, D, L, R)을 받아 각각의 경우에 맞게 방향을 바꾸고, 다음 칸이 평지일 경우 전차를 이동시켰다. 포탄을 발사하는 메서드 shoot은 while문을 사용해 포탄이 나가는 위치가 맵을 벗어나거나, 강철로 만들어진 벽일 때는 곧바로 return을 시켰고, 벽돌로 만들어진 벽에 부딪힐 경우에는 해당 벽을 '.'로 바꿔주고, return시켰다. 코드 처음에는 System.out.println으로 출력했는데, 확실히 BufferedWriter가 빠르다! 둘 다 입력은 BufferedReader로 받았..
[SWEA] 달팽이 숫자 👀 문제 설명 문제 로그인해야 문제를 볼 수 있다. ✍🏻풀이 달팽이는 오른쪽, 아래, 왼쪽, 위를 순서대로 이동하므로, 방향대로 움직이게 하는 dx, dy 배열을 선언한다. while문은 count가 N * N보다 작거나 같을 동안 실행된다. while문 안에서는 현재 위치인 curX, curY와 dx, dy를 사용해 다음 위치를 가져온다. 만약, 다음 위치가 범위를 벗어나거나, 해당 위치의 값이 0이 아니라면 (이미 방문한 곳이라는 의미) dir 값을 그 다음으로 바꾼다. nextX, nextY가 제대로 된 값이라면 curX, curY 위치의 값을 현재 count로 바꾸고, count + 1을 한 후, curX에 nextX를, curY에 nextY를 대입하면 된다. 코드 package swea; // ..
[Baekjoon] 스위치 켜고 끄기 👀 문제 설명 문제 1부터 연속적으로 번호가 붙어있는 스위치들이 있다. 스위치는 켜져 있거나 꺼져있는 상태이다. 에 스위치 8개의 상태가 표시되어 있다. ‘1’은 스위치가 켜져 있음을, ‘0’은 꺼져 있음을 나타낸다. 그리고 학생 몇 명을 뽑아서, 학생들에게 1 이상이고 스위치 개수 이하인 자연수를 하나씩 나누어주었다. 학생들은 자신의 성별과 받은 수에 따라 아래와 같은 방식으로 스위치를 조작하게 된다. 남학생은 스위치 번호가 자기가 받은 수의 배수이면, 그 스위치의 상태를 바꾼다. 즉, 스위치가 켜져 있으면 끄고, 꺼져 있으면 켠다. 과 같은 상태에서 남학생이 3을 받았다면, 이 학생은 와 같이 3번, 6번 스위치의 상태를 바꾼다. 여학생은 자기가 받은 수와 같은 번호가 붙은 스위치를 중심으로 좌우가 ..
[SWEA] 원재의 메모리 복구하기 👀 문제 설명 문제 로그인해야 문제를 볼 수 있다. ✍🏻풀이 비트값이 달라지는 횟수를 계산하면 된다. 예를 들어, 메모리 값이 110001110 일 때, 초기값이 000000000이므로, before에는 0을 저장해두고, 메모리 값의 처음부터 접근한다. 110001110 밑줄 친 부분이 count에 +1을 하는 부분이다. 000000000 -> 111111111 -> 110000000 -> 110001111 -> 110001110 이런 식으로 바뀐다. 코드 package swea; // 원재의 메모리 복구하기(https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV19AcoKI9sCFAZN&categoryId=AV19A..