프로그래머스 Level2 - 삼각달팽이
·
알고리즘
문제 풀이1 - 2차원 배열에 값을 담기 해당 문제에서는 삼각형을 표현 해야하는데, 이는 n x n의 2차원 배열로 표현할 수 있습니다. 달팽이 형태를 채우는것은 2차원 배열에서 아래 → 오른쪽 → 왼쪽으로 진행하면서 값을 채워나가게 됩니다. 문제풀이 흐름 n x n 2차원 배열을 선언한다. 현재 위치 (0,0) 에서부터 방향에 따라 이동할 수 없을 때까지 숫자를 채운다. 아래로 이동 → 오른쪽으로 이동 → 왼쪽위로 이동 채워진 숫자를 차례대로 1차원 배열에 옮겨서 반환한다. 1. n x n 2차원 배열 선언 int[][] triangle = new int[n][n]; int v = 1; v변수는 채워넣은 값으로 1씩 증가할 값입니다. 2. 현재위치를 (0, 0)으로 초기화 int x = 0; int y..
프로그래머스 Level2 자바 - 교점에 별 만들기
·
알고리즘
문제 https://school.programmers.co.kr/learn/courses/30/lessons/87377?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드작성 해당 문제는 좌표를 표현해야 하므로 좌표를 나타내는 클래스를 우선 생성해 줍니다. private static class Point{ public final long x, y; private Point(long x, long y){ this.x = x; this.y = y; }; } x,y 좌표는 데이터를 나타내 주므로 final을 이용해서 불변성을 갖게 하고..
유클리드 호제법 - 최대공약수 구하기 : 백준 13241번으로 알아보기
·
알고리즘
유클리드 호제법이란? 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘이다. 호제법이라는 것은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 말한다. 예시 12345 와 2445의 최대공약수를 구해보면, 다음과 같게 풀 수 있다. 12345 = 2445 x 5 + 125 2445 = 125 x 19 + 70 125 = 70 x 1 + 55 70 = 55 x 1 + 15 55 = 15 x 3 + 10 15 = 10 x 1 + 5 10 = 5 x 2 이에 따라 최대공약수는 5가 나오게 된다. 최소공배수 구하기 최소 공배수는 두 정수가 공통적으로 가지는 배수 중 가장 작은 값을 의미합니다. 정수 a와 b의 최대공약수 G에 대해서 아래의 식을 만족하는 정수 x와y가 존재할때, a =..
11650번 - 좌표 정렬하기(Stream, Comparator 사용)
·
알고리즘
문제 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Comparator; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int p = Integer.parseInt(br.readLine()); int[][] arr = ne..
백준 10978번 : 세로읽기 - 자바
·
알고리즘
문제 https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 풀이 풀이 출처 https://dev-coco.tistory.com/156 [백준] 10798번 세로읽기 자바(Java) https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘ dev-coco.tist..
1157번 : 단어공부 - JAVA
·
알고리즘
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 풀이 출처 https://st-lab.tistory.com/64 [백준] 1157번 : 단어 공부 - JAVA [자바] https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자 st-lab.tistory.com 문제 답 import java.io.Buff..
문자열 - 회문 문자열
·
알고리즘
문제 문자열이 입력되었을때, 앞에서부터 읽을때나, 뒤에서 읽을때나 같은 문자열이면 “YES”를 아니라면 NO를 출력해주세요 대소문자 구분X 입력 gooG 출력 YES 풀이 나의 답 import java.util.Scanner; public class Main { public static void main(String[] args){ Main main = new Main(); Scanner in=new Scanner(System.in); String str = in.next(); System.out.println(main.solution(str)); return ; } public String solution(String str) { String answer = ""; String rs = new Stri..
알고리즘 - 문자열 문제 : 암호
·
알고리즘
문제 암호는 # 과 *로 이루어져 있으며, #은 이진수의 1로, *은 이진수의 0으로 변환하여 해석해주세요 알파벳 한 문자마다 #또는 *이 일곱개로 구성되어 있습니다. 입력 4 #****###**#####**#####**##** 출력 COOL 풀이 나의 답 -틀림 import java.util.Scanner; public class Main { public static void main(String[] args) { Main main = new Main(); Scanner in = new Scanner(System.in); int cnt = in.nextInt(); String str = in.next(); System.out.print(main.solution(cnt, str)); return; } p..
자료구조란?
·
알고리즘
자료구조란? 자료구조(data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다 - 위키 백과 자료구조는 데이터 값을 모임, 데이터간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미합니다. 문제해결을 위해 여러 형태의 자료구조가 활용이 되며, 이에 따라서 다양한 알고리즘이 사용이 됩니다. 자료구조가 필요한 이유 데이터를 효율적으로 저장하고 관리해서 메모리를 효율적으로 사용하기 위해서 입니다. 자료구조를 적절하게 사용하게 된다면, 메모리의 사용을 줄일수 있고, 실행시간도 단축시킬수 있습니다. 자료 구조의 선택 기준 적은 양의 데이터를 처리할 때는 어떤 자료구조를 사용해도 큰 차이가 없으나, 대량의 데이터 처리에서는 자료구조에 따라서 효율성..
특정 문자 뒤집기
·
알고리즘
문제 알파벳과 특수문자가 섞인 문자열에서 알파벳끼리만 순서를 뒤집고, 특수문자는 뒤집지 않게 하세요 입력 a#b!GE*T@S 출력 S#T!EG*b@a 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Main main = new Main(); Scanner in = new Scanner(System.in); String str = in.next(); System.out.println(main.solution(str)); } public String solution(String str) { char[] c = str.toCharArray(); int lt = 0, rt = str.length()-..