728x90
반응형

Python 문제풀이

x = int(input())
y = int(input())
sum=0

for i in range(101):
    if x <= (i*i) and y>=(i*i):
        if sum==0:
            min = i*i
        sum += i*i

if sum ==0:
    print(-1)
else:
    print(sum)
    print(min)

주어진 범위가 크지 않기 때문에 100까지의 제곱수를 비교해서 계산하면 됩니다.

728x90
반응형
728x90
반응형

Python 문제풀이

x = input()
y = input()

result=0

for i in range(len(x)):
    for j in range(len(y)):
        if x[i]!=" " and x[i] == y[j]:
            z = x[i]
            x = x.replace(x[i], " ", 1)
            y = y.replace(y[j], " ", 1)
            break

for i in range(len(x)):
    if x[i]!=' ':
        result +=1

for i in range(len(y)):
    if y[i]!=' ':
        result +=1

print(result)

어렵지 않게 같은 알파벳이 있는 경우 양쪽 문자 모두 해당 자리를 공백으로 변환한 후, 마지막에 공백이 아닌 알파벳의 개수를 세는 코드입니다. 서로 공통되지 않는 알파벳의 수를 구한다고 생각하면 편합니다.

728x90
반응형
728x90
반응형

Python 문제풀이

n = int(input())
a = []
result = ''
for i in range(n):
    a.insert(i,input())

if n==1:
    print(a[0])
    exit

for i in range(len(a[0])):
    for j in range(n-1):
        if a[j][i]!=a[j+1][i]:
            result += '?'
            break
        elif j == n-2:
            result += a[j][i]

print(result)

간단하게 입력받는 문장들의 각 자리를 비교해주면 된다. 각자리를 비교하다가 다른게 나온다면 '?' 문자를 결과 문자열에 추가해 주고 다음 자리 문자를 비교하기 위해 break를 한다.

 

그 자리의 문자가 모두 동일하다면 결과 문자열에 해당자리 문자를 추가해준다.

 

간과하게 되는 부분이 있는데, 문자열이 하나밖에 없는 경우의 처리를 따로 해주어야한다. 비교대상이 없기 때문에 그냥 그것만 출력하고 프로그램을 종료하도록 한다.

728x90
반응형
728x90
반응형

Python 문제풀이

n = int(input(''))
result = []
for i in range(n):
    x, y = map(int, input().split())
    x = x%10
    z = x%10
    for j in range(y-1):
        z = z*x
        z = z%10
    if(z==0):
        z=10
    result.insert(i,z)

for i in range(n):
    print(result[i])

처음에는 x**y 등 그냥 제곱수를 계산하고 결과%10을 하여 도출하면 될것이라고 생각할 것이다.

 

하지만 이런 풀이는 시간제한을 지킬 수 없다. 그렇기 때문에 애초에 곱할때마다 한자리수만 남겨두어 곱한다. 어차피 우리가 필요한 값은 1의자리 수이기 때문이다.

 

그리고 그 한자리수가 0으로 끝났다면 그것은 10에 넣어줘야 하기 때문에 조건문을 달아주었다.

728x90
반응형
728x90
반응형

1. 숫자의 계산

a = 10
b = 2

print(a+b) #12
print(a-b) #8
print(a*b) #20
print(a/b) #5.0
print(a**b) #100
print(a%b) #0

: 12

   8

  20

 5.0

100

  0

 

 

 

2. 문자의 저장

a = 'fjdkslvn'
b = '의 공부방'

print(a+b)

: fjdkslvn의 공부방

 

 

 

 

3. bool 연산

a = True

print(a)

: True

 

 

a = (3 < 2)

print(a)

: False

728x90
반응형
728x90
반응형

커스텀 리스트뷰를 생성하는 방법입니다. 파이어베이스와 연동하였습니다.

 

리스트를 추가하고싶다면 따로 버튼을 만들어서 추가하시면 됩니다.

기본적인 코드와 동작을 확인하시면 좋을것같습니다.

 

리스트뷰 객체.java

//테이블이라고 생각하고, 테이블에 들어갈 속성값을 넣기
//파이어베이스는 RDBMS와 다르기 때문에 테이블이라는 개념이 없음. 원래는 키값이라고 부름
public class memo_list {
    String mname; //제목
    String mcontent; //내용

    public memo_list(){} // 생성자 메서드


    public String getmname() {
        return mname;
    }

    public void setmname(String mname) {
        this.mname = mname;
    }

    public String getmcontent() {
        return mcontent;
    }

    public void setmcontent(String mcontent) {
        this.mcontent = mcontent;
    }

    //값을 추가할때 쓰는 함수
    public memo_list(String mname, String mcontent){
        this.mname = mname;
        this.mcontent = mcontent;
    }
}

 

 

메인화면.java

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;
    private ArrayList<memo_list> arrayList;
    private FirebaseDatabase database;
    private DatabaseReference databaseReference;

    //DatabaseReference는 데이터베이스의 특정 위치로 연결하는 거라고 생각하면 된다.
    //현재 연결은 데이터베이스에만 딱 연결해놓고 키값(테이블 또는 속성)의 위치 까지는 들어가지는 않은 모습이다.


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //커스텀 리스트뷰 시작
        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true); // 리사이클러뷰 기존성능 강화
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        arrayList = new ArrayList<>(); // 그룹 객체를 담을 어레이 리스트 (어댑터쪽으로)

        database = FirebaseDatabase.getInstance(); // 파이어베이스 데이터베이스 연동
        databaseReference = database.getReference(); // DB 테이블 연결

        //값이 변경되는걸 감지하는 함수!
        databaseReference.child("memo").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                // 파이어베이스 데이터베이스의 데이터를 받아오는 곳
                arrayList.clear(); // 기존 배열리스트가 존재하지않게 초기화
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) { // 반복문으로 데이터 List를 추출해냄
                    memo_list memo_list = snapshot.getValue(memo_list.class); //객체를 선언하여 데이터를 담기
                    arrayList.add(memo_list); // 담은 데이터들을 배열리스트에 넣고 리사이클러뷰로 보낼 준비
                }
                adapter.notifyDataSetChanged(); // 리스트 저장 및 새로고침
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                // 디비를 가져오던중 에러 발생 시
                //Log.e("MainActivity", String.valueOf(databaseError.toException())); // 에러문 출력
            }


        });

        adapter = new memo_Adapter(arrayList, this);
        recyclerView.setAdapter(adapter); // 리사이클러뷰에 어댑터 연결

     }

}

 

 

어댑터.java

public class memo_Adapter extends RecyclerView.Adapter<memo_Adapter.CustomViewHoler> {

    private ArrayList<memo_list> arrayList;
    private Context context;
    private FirebaseDatabase database;
    private DatabaseReference databaseReference;

	//메인에서 어댑터로 받아온 값
    public memo_Adapter(ArrayList<memo_list> arrayList, Context context) {
        this.arrayList = arrayList;
        this.context = context;
    }

    @NonNull
    @Override
    public CustomViewHoler onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    	//메모 list.xml 연결하기
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.memo_list, parent, false);
        CustomViewHoler holder = new CustomViewHoler(view);

        return holder;
    }



    @Override
    public void onBindViewHolder(@NonNull final CustomViewHoler holder, int position) {
    	//각 리스트뷰에 값을 넣는 부분
        holder.mname.setText(arrayList.get(position).getmname());
        holder.mcontent.setText(arrayList.get(position).getmcontent());
        // 만약 정수형이라면 holder.gtime.setText(String.valueOf(arrayList.get(position).getstudytime()));


    }

    public class CustomViewHoler extends RecyclerView.ViewHolder {
    	//리스트.xml 요소 아이디 연결
        TextView mname;
        TextView mcontent;


        public CustomViewHoler(@NonNull View itemView) {
            super(itemView);
            this.mname = itemView.findViewById(R.id.mname);
            this.mcontent = itemView.findViewById(R.id.mcontent);

        }
    }
}

 

 

 

리스트.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/gray"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_margin="10dp"
            android:layout_gravity="center"
            android:text="메모이름"
            android:textColor="@color/white"
            android:id="@+id/mname"
            android:textSize="20sp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/white"
            android:visibility="invisible"
            android:id="@+id/mcontent"/>

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:orientation="horizontal"
        android:background="@color/white"></LinearLayout>



</LinearLayout>

 

메인화면.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/gray">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">


        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </androidx.recyclerview.widget.RecyclerView>



    </LinearLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

: 편의를 위해 리니어 레이아웃 안에 감쌌습니다. androidx.coordinatorlayout속에 만든 이유는.. 제가 플로팅 버튼을 같이 사용하기 때문입니다. 애초에 리니어로 만드셔도 상관없습니다.

728x90
반응형

+ Recent posts