728x90
반응형

2675번: 문자열 반복 (acmicpc.net)

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net

 

 

 

Java 문제풀이

import java.util.*;

public class B2675 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int n = scan.nextInt(); // 작업할 횟수
		String[] result = new String[n]; // 결과값을 저장할 배열
        
		// n번만큼 작업을 진행
		for(int i=0;i<n;i++) {
			int num = scan.nextInt(); // 문자를 반복할 횟수
			String str = scan.next(); // 문자열
			String str_num ="";
			// 각 문자를
			for(int j=0;j<str.length();j++) {
				// num번만큼 반복하여 출력
				for(int k=0;k<num;k++) {
					str_num += str.charAt(j);
				}
			}
			result[i] = str_num;
		}
		
		// 결과값을 모아둔 배열 출력
		for(String r:result) {
			System.out.println(r);
		}

	}

}

 

어쩌다보니 for문을 3중으로 써버렸습니다. 실제로 개발할때는 반복문의 중복을 최대한 피하도록 노력해야겠습니다. 생각해보면 백준도 실제 개발을 위한 공부인데.. 지금부터라도 고쳐야겠네요.

 

코드는 짧고 간지나게 짜는것이 아니라.. 보기 편하게 짜는것이 좋다고.. 합니다. 잘못 익힌 습관을 고치도록 노력해야겠습니다.

728x90
반응형
728x90
반응형
ArrayList 정리

 

- ArrayList 선언

import java.util.ArrayList;

public class Array {

	public static void main(String[] args) {
		// 동적 배열 선언
		ArrayList<String> str = new ArrayList<>();
    }
}

ArrayList를 사용하기 위해 java.util.ArrayList를 import합니다. Java.util.*로 대체해도 가능합니다.

 

ArrayList<자료형> 배열이름 = new ArrayList<자료형 생략가능>(숫자쓰면 크기지정 / 리스트  쓰면 복사);

 

특별한 일이 없다면 ArrayList<String> str = new ArrayList<>();로 선언하셔도 좋습니다.

 

 

 

 

 

 

 

 

 

 


- ArrayList 값 추가

 

 

		// 리스트에 값 추가
		str.add("fjdkslvn@gmail.com");
		str.add("djmax@gmail.com");
		str.add("fullmetal@gmail.com");
		System.out.println(str+" <-- 리스트에 값 추가");
		
		// 원하는 위치에 값 추가
		str.add(1,"demon@gmail.com");
		System.out.println(str+" <-- 원하는 위치에 값 추가");
        
        // 해당 위치 값 변경
		str.set(2, "alchemist@gmail.com");

리스트명.add(내용물); 로 리스트에 값을 추가할 수 있습니다.

 

리스트명.add(위치,내용물); 로 위치를 지정해서 값을 추가할 수도 있습니다.

지정하지않으면 출력기준 맨 오른쪽에 들어갑니다.

 

리스트명.set(위치,내용물); 로 값을 변경할 수 있습니다.

 

 

 

 

 

 

 

 


- ArrayList 값 접근 / 문자열 자르기

 

 

		// 특정 요소 접근
		System.out.println(str.get(1)+" <-- 특정 요소 접근");
		
		// 특정 요소 문자열 자르기
		System.out.println(str.get(1).split("@")[0]+" <-- 특정 요소 문자열 자르기");

리스트명.get(위치)를 통해 특정 요소에 접근할 수 있습니다.

 

리스트명.get(위치).split("문자열을 자를 기준")[자른 후 선택할 문자열]을 통해 문자열을 자르고 원하는 값만 가져올 수 있습니다. 만약 위 코드에서 str.get(1).split("@")[1]이라고 했다면 gmail.com이 출력됐을겁니다.

 

 

 

 

 

 

 

 

 

 


- ArrayList 반복문을 통해 출력

 

 

		// foreach를 사용하여 리스트 값 출력하기
		for (String st : str) {
            System.out.println(st);
        }

* 일반적인 for문을 사용해도 무방합니다*

 

for(자료형 변수 : 리스트명)의 형태로 이루어져있습니다. 코드에서 st라는 부분은 각 리스트값을 가져올 변수를 의미합니다. 리스트 길이만큼 반복문이 진행되면서 리스트 요소를 st로 뽑아옵니다.

 

이걸 사용하면 숫자값이 1씩 증가하는 i변수를 쓰진 못하지만 간편합니다. 1씩 증가하는 숫자값을 쓰고싶다면 while에서 처럼 직접 변수를 생성하여 반복문이 끝날쯤에 숫자를 1씩 증가시켜줍시다.

 

 

 

 

 

 

 

 

 

 

 

 


- ArrayList 요소 포함 여부

 

 

		// 특정 요소가 포함되어있는지 확인
		boolean bool = str.contains("fjdkslvn@gmail.com");
        System.out.println(bool+" <-- 특정 요소가 포함되어있는지");
        
        // 특정 요소가 포함되어있으면 위치 추출
        int num = str.indexOf("fjdkslvn@gmail.com");
        System.out.println(num+" <-- 요소가 있으면 위치 추출");

리스트명.contains(요소)를 통해 특정 요소가 포함되어있는지 확인할 수 있습니다.

 

리스트명.index0f(요소)를 통해 특정 요소가 포함되어있으면 해당 위치를 추출할 수 있습니다.

=> 만약 포함되어있지 않다면 '-1'을 반환합니다.

 

 

 

 

 

 

 

 


- ArrayList 삭제 / 길이 추출

 

 

		// 리스트 길이 추출
		System.out.println(str.size()+" <-- 리스트 길이 추출");
		
		// 리스트 요소 삭제
		String rm = str.remove(1);
		System.out.println(rm+" <-- 삭제된 값");
		System.out.println(str+" <-- 리스트 요소 삭제 후");
		
		// 리스트 비우기
		str.clear();
		System.out.println(str+" <-- 리스트 비우기");

리스트명.size()를 통해 리스트 길이를 추출할 수 있습니다.

 

리스트명.remove(위치)를 통해 리스트 요소를 삭제할 수 있고, 해당 값을 담아서 활용할 수 있습니다.

 

리스트명.clear()를 통해 리스트를 비울 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 


전체 코드

 

 

Array.java

import java.util.ArrayList;

public class Array {

	public static void main(String[] args) {
		// 동적 배열 선언
		ArrayList<String> str = new ArrayList<>();
		
		// 리스트에 값 추가
		str.add("fjdkslvn@gmail.com");
		str.add("djmax@gmail.com");
		str.add("fullmetal@gmail.com");
		System.out.println(str+" <-- 리스트에 값 추가");
		
		// 원하는 위치에 값 추가
		str.add(1,"demon@gmail.com");
		System.out.println(str+" <-- 원하는 위치에 값 추가");
		
		// 해당 위치 값 변경
		str.set(2, "alchemist@gmail.com");
		System.out.println(str+" <-- 해당 위치 값 변경");
		
		// 특정 요소 접근
		System.out.println(str.get(1)+" <-- 특정 요소 접근");
		
		// 특정 요소 문자열 자르기
		System.out.println(str.get(1).split("@")[0]+" <-- 특정 요소 문자열 자르기");
		
		// foreach를 사용하여 리스트 값 출력
		for (String st : str) {
            System.out.println(st);
        }
		
		// 특정 요소가 포함되어있는지 확인
		boolean bool = str.contains("fjdkslvn@gmail.com");
          System.out.println(bool+" <-- 특정 요소가 포함되어있는지");

          // 특정 요소가 포함되어있으면 위치 추출
          int num = str.indexOf("fjdkslvn@gmail.com");
          System.out.println(num+" <-- 요소가 있으면 위치 추출");
	
		// 리스트 길이 추출
		System.out.println(str.size()+" <-- 리스트 길이 추출");
		
		// 리스트 요소 삭제
		String rm = str.remove(1);
		System.out.println(rm+" <-- 삭제된 값");
		System.out.println(str+" <-- 리스트 요소 삭제 후");
		
		// 리스트 비우기
		str.clear();
		System.out.println(str+" <-- 리스트 비우기");
		
		
	}

}

 

 

728x90
반응형
728x90
반응형

Cal.java

import java.util.Calendar;

public class Cal {

	public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH) + 1;
		int day = cal.get(Calendar.DAY_OF_MONTH);
		
		System.out.println(year+"-"+month+"-"+day);
	}

}

MONTH 부분에 +1을 하지않고 출력하면 저번달 숫자가 나옵니다.

 

원인은 모르지만 보기 편하게 +1을 하고 사용합시다.

728x90
반응형
728x90
반응형

* eclipse에서 mariaDB를 이미 연동한 상태로 시작합니다*

 

eclipse에서 mariaDB 사용하기 / mariaDB 연동 :: 러아니푸의 공부방 (tistory.com)

 

eclipse에서 mariaDB 사용하기 / mariaDB 연동

Maven Repository: mariadb (mvnrepository.com) 1. mariadb를 검색하고 가장 상단에 나오는 'MariaDB Java Client'를 클릭한다. 2. 원하는 버전을 선택하고 jar파일을 눌러 다운로드 받습니다. <만약 다운로드..

fjdkslvn.tistory.com

 

 

입력한 데이터를 DB로 저장하는 예제

 

 

 

데이터 입력하는.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>학생 정보 입력</title>
</head>
<body>
	<h1>학생 정보 입력</h1>
	<form action="./insert_studentAction.jsp">
		<table border="1">
			<tr>
				<th>학번</th>
				<th><input type="text" name="number"></th>
			</tr>
			<tr>
				<th>이름</th>
				<th><input type="text" name="name"></th>
			</tr>
			<tr>
				<th>전공</th>
				<th><input type="text" name="major"></th>
			</tr>
		</table>
		<br>
		<button type="submit">추가</button>
	</form>

</body>
</html>

 

 

 

데이터 저장하는.jsp(insert_studentAction.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>학생 정보 저장 완료</title>
</head>
<body>
	<h1>학생 정보 저장 완료</h1>
<%
	// 작성한 값 받아오기
	int number = Integer.parseInt(request.getParameter("number"));
	String name = request.getParameter("name");
	String major = request.getParameter("major");
	
	// mariaDB 준비
	Class.forName("org.mariadb.jdbc.Driver");
	System.out.println("mariadb 사용가능");
	
	// mariaDB 연결
	Connection conn = DriverManager.getConnection("jdbc:mariadb://주소값(기본은 127.0.0.1:3306 입니다)/DB명","사용자명(기본은 root입니다)","비밀번호");
	System.out.println(conn + "<-- conn");
	
	// 쿼리
	PreparedStatement stmt = conn.prepareStatement("insert into 테이블명(컬럼, 컬럼, 컬럼) values(?,?,?)"); // ?표현식 : 변수자리
	stmt.setInt(1, number);
	stmt.setString(2, name);
	stmt.setString(3, major);
    System.out.println(stmt + "<-- stmt");
	
	// 쿼리 실행
	stmt.executeUpdate();
    conn.close(); // DB 종료
%>
</body>
</html>

 

 

 

 

 

 

DB에서 데이터 읽어오기

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%	
	//mariaDB 준비
	Class.forName("org.mariadb.jdbc.Driver");
	System.out.println("mariadb 사용가능");
	
	// mariaDB 연결
	Connection conn = DriverManager.getConnection("jdbc:mariadb://주소값(기본은 127.0.0.1:3306 입니다)/DB명","사용자명(기본은 root입니다)","비밀번호");
	System.out.println(conn + "<-- conn");
	
	// 쿼리
	PreparedStatement stmt = conn.prepareStatement("select * from 테이블명");
	System.out.println(stmt + "<-- stmt");
	
	// 쿼리 실행
	ResultSet rs = stmt.executeQuery();
	
%>
	<table border="1">
		<tr>
			<td>학번</td>
			<td>이름</td>
			<td>전공</td>
		</tr>
		
<%
		while(rs.next()){
%>
				<tr>
					<td><%=rs.getString("number") %></td>
					<td><%=rs.getString("name") %></td>
					<td><%=rs.getString("major") %></td>
				</tr>
				
<%
		}
%>
	</table>
 
</body>
</html>

예쁘게 보기위해 테이블로 만들었습니다. ResultSet을 사용하여 값에 접근하는것 이외에는 DB에 저장하는 코드와 크게 다르지 않습니다. 

728x90
반응형
728x90
반응형

Mockaroo - Random Data Generator and API Mocking Tool | JSON / CSV / SQL / Excel

 

Mockaroo - Random Data Generator and API Mocking Tool | JSON / CSV / SQL / Excel

Mock your back-end API and start coding your UI today. It's hard to put together a meaningful UI prototype without making real requests to an API. By making real requests, you'll uncover problems with application flow, timing, and API design early, improvi

www.mockaroo.com

 

 

1. 위 링크로 들어가 입력할 데이터에 맞는 컬럼명과 타입을 선택한다.

하단의 Rows에는 몇개의 데이터를 만들것인지 입력하고, format은 sql로 한 뒤에 DOWNLOAD DATA를 누릅니다.

 

 

 

 

 

 

 

2. DB를 직접 만지고 관리할 수 있는 프로그램을 실행한다.

저는 HeidSQL을 사용하였습니다.

 

사용하시는 프로그램이 없다면 아래의 글을 보고 활용하는것을 추천드립니다.

 

HeidiSQL 사용하기 / mariaDB :: 러아니푸의 공부방 (tistory.com)

 

HeidiSQL 사용하기 / mariaDB

1. 프로그램을 실행하고 '+신규' 버튼을 클릭하고 mariaDB설치시 입력했던 사용자명과 암호, 포트번호를 입력한다. 2. Unnamed-> 새로생성 -> 데이터베이스를 눌러 생성화면을 연다. 데이터베이스명을

fjdkslvn.tistory.com

 

 

 

 

 

 

3. 다운로드 받은 sql파일을 불러온다.

쿼리에서 우클릭 -> SQL 파일 불러오기를 선택합니다.

 

 

 

다운로드 받았던 sql을 선택하고 열기를 누릅니다.

 

 

 

쿼리가 잘 들어온 것을 확인할 수 있습니다.

 

 

 

4. 위에 쿼리 실행버튼(파란 삼각형)을 누르고, 데이터로가서 F5를 누른다.

 

잘 들어온것을 확인할 수 있습니다.

728x90
반응형

'Web > DB' 카테고리의 다른 글

HeidiSQL / 데이터베이스 백업하기  (2) 2021.09.24
HeidiSQL 사용하기 / mariaDB  (1) 2021.08.25
728x90
반응형
public class test {

	public static void main(String[] args) {
		String str ="200";
		int num;
		
		
		// 문자를 숫자로 변환
		num=Integer.parseInt(str);
		System.out.println(num+" <--문자를 숫자로 변환");
		
		num +=100; // num==300
		
		// 숫자를 문자로 변환
		str = Integer.toString(num);
		System.out.println(str+" <--숫자를 문자로 변환");
		
	}

}

 

 

 

728x90
반응형

+ Recent posts